문제
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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
만으로도 값을 구할 수 있었다!
이런 풀이들을 보면서 내 것으로 흡수하는게 중요하다고 느낀다.
정확도 테스트 결과
시간도 더 절약되었다.
'Coding test' 카테고리의 다른 글
[프로그래머스] 3진법 뒤집기 (Level 1) (0) | 2022.04.19 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 (Level 1) (0) | 2022.04.19 |
[프로그래머스] 두 개 뽑아서 더하기 (Level 1) (0) | 2022.04.19 |
[프로그래머스] K번째 수 (Level 1) (0) | 2022.04.19 |
[프로그래머스] 소수 만들기 (Level 1) (0) | 2022.04.18 |