프로그래머스-음양더하기
Updated:
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
입출력 예시 인자 absolutes([4,7,12]) signs([true,false,true]) signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다. 따라서 세 수의 합인 9를 return 해야 합니다.
문제해설
signs의 false면 같은 인덱스 자리에 있는 absolutes의 밸류값을 음수로 변경하고 배열 인자의 각각의 값을 연산하는 것으로 해석하였습니다.
해결방법
1번 풀이
function solution(a, s) {
let result = 0;
for (let i = 0; i < s.length; i++) {
result += s[i] ? a[i] : -a[i];
}
return result;
}
solution([4, 7, 12], [true, false, true]);
2번 풀이
function solution(a, s) {
let result2 = 0;
const b = a.reduce((acc, cur, index) => {
return (result2 += s[index] ? cur : -cur);
}, 0);
return result;
}
solution([4, 7, 12], [true, false, true]);
for
문으로 푼 케이스와 reduce
로 푼 두가지 경우로 해당 문제를 풀었습니다. 각 배열의 인자의 경우가 a,s가 동일하니 true,false
로 판별할 수 있는 인자의 조건을 삼항연산자를 이용하여 조건이 있다면 a인자의 값 그대로 false인 경우에는 -
를 붙여서 연산을 하였습니다.
배운점
연산을 할 때, 1 + -2
라고 해도 연산은 뺄셈이 된다라는 걸 알았습니다.