Coding test

[프로그래머스] 음양 더하기 (Level 1)

Jiwoo 2022. 4. 19. 16:39

문제

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

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

나의 풀이

function solution(ab, s) {
    // absolutes => 절대값 배열
    // signs => 양(true), 음(false) 배열
    // 실제 정수의 합 반환

    // ab.map(e => s[i] 에 따라 +/ -)
    // return 배열의 합
    return ab.map((e, i) => s[i] ? +e : -e).reduce((sum,e) => sum += e, 0);
}

 

  • 정확도 테스트 결과


 

다른 풀이

function solution(ab, s) {
    // absolutes => 절대값 배열
    // signs => 양(true), 음(false) 배열
    // 실제 정수의 합 반환

    return ab.reduce((sum, e, i) => sum += e*(s[i]  ? 1 : -1), 0);

}

 

map을 사용하지 않고 reduce만으로도 값을 구할 수 있었다!
이런 풀이들을 보면서 내 것으로 흡수하는게 중요하다고 느낀다.
 

  • 정확도 테스트 결과

  • 시간도 더 절약되었다.