본문 바로가기

Algorithm

[알고리즘] #7 음양 더하기 | 프로그래머스

728x90

프로그래머스에서 음양 더하기 알고리즘 문제를 풀어보았다.

https://programmers.co.kr/learn/courses/30/lessons/76501

 

코딩테스트 연습 - 음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

programmers.co.kr

 

 

 

문제 설명

 

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 


제한사항

  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

입출력 예

 
 

입출력 예 설명

 

입출력 예 #1

  • signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
  • 따라서 세 수의 합인 9를 return 해야 합니다.

입출력 예 #2

  • signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
  • 따라서 세 수의 합인 0을 return 해야 합니다.

 


 

< 문제풀이 코드 >

 

< 실행결과 >

 

 

<문제 리뷰>

 

//어떤 정수들이 있습니다. 
//이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 
//이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 
//실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

//아래 세줄은 혼자 실험하기 위해서 넣은 것이다. 
//absolutes 변수에는 지금 모두 양수가 있지만,
//signs을 확인하면 index1번에는 false 이므로
//absolutes index1번을 -7로 바꿔주고 4, -7, 12의 합을 구해야한다.

//let absolutes = [4, 7, 12];
//let signs = [true, false, true];
//solution(absolutes, signs);

//4,7,12가 담겨있는 배열 absolutes와
//true, false, true가 담겨있는 signs을 파라미터로 가져왔다.
function solution(absolutes, signs) {
	//이따가 답을 solution에 리턴해주기 위해서 만들어놓음.
    let answer = 0;
	
    //내가 해야할 일은 false가 있다면 음수로 바꿔주는 것이다.
	//먼저 signs배열을 훑어서 어디에 false가 있는지 찾아보자.
    for (let num in signs){
        
        //sign배열 안의 어떤 index가 false라면
        //absolutes안에서 같은 index번호의 숫자를 음수로 만들어준다.
        //-1를 곱하면 음수가 된다.
        if (signs[num] === false) {
        absolutes[num] *= -1;
        }
        
    //이제 마지막으로 abolutes안의 숫자들(4, -7, 12)을 모두 더해준다.    
    answer += absolutes[num];
    }
    //answer을 solution에 가져다준다.
    //solution은 9를 받아간다. 
    return answer;
}

 

 

 

 

다른 사람들은 어떻게 풀었을까? 

https://programmers.co.kr/learn/courses/30/lessons/76501/solution_groups?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

더 알아보아야할 것

: reduce 메소드

: 삼항연산자

 

 

 

 

* 그 외 : 음수로 받아도 무조건 양수로 바꿔서 합치기

처음에 문제를 잘못이해해서 음수로 받아도 무조건 양수로 바꿔서 합치는 것으로 풀이했다. 기록용으로 남겨둔다.

 

// 잘못이해해서 음수로 받아도 무조건 양수로 합치게 함...
// 콘솔로 찍어본 것, 주석도 그냥 놔둔다.

let absolutes = [4, -7, 12];
let signs = [true, false, true];
let signbool = 0;


solution(absolutes, signs);

function solution(absolutes, signs) {
  let answer = 0;

  for (let num in absolutes){
    // console.log(absolutes[num]);

    signbool = Math.sign(absolutes[num]);
    // console.log(signbool);
    if(signbool === -1) {
      absolutes[num] *= -1; 
    }
    // console.log(absolutes[num]);
    answer += absolutes[num];
  }
  // console.log(answer);
  return answer;
}
728x90