[프로그래머스] 음양 더하기

Changyun Go·2021년 12월 6일
0

프로그래머스 Level 1

목록 보기
17/19
post-thumbnail

음양 더하기

문제 설명


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

제한 사항


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

나의 풀이


function solution(absolutes, signs) {
    let answer = 0;
    const int = [];
    for(let i = 0; i < absolutes.length; i++){
        if(signs[i] === false){
            int.push(absolutes[i]*(-1));  
        }
        else{
            int.push(absolutes[i]);
        }
        answer += int[i];
    }
    return answer;
}

다른 사람의 풀이


function solution(absolutes, signs) {

    return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}

P.S.

✍️ 난이도는 높지 않아서 금방 풀었지만, 제출할 때 아차 싶었던 부분이 있었다. 정숫값을 만들어 배열에 넣어주면서 값을 바로 더해주면 되는데, 코드를 따로 작성하면서 불필요한 과정을 만들어버렸다.

다른 사람의 풀이를 보면 reduce 메소드와 삼항 연산자를 이용해서 문제를 푼 것을 알 수 있다.
1. signs 배열의 현재 요소가 true면 1을, false면 -1을 absolutes 배열의 현재 요소에 곱해준다.
2. 그 값을 누적한 값을 반환한다.

이렇게 심플하게 문제를 풀 수 있다는 사실이 놀랍다😂

0개의 댓글