한 걸음씩 기록하며
[프로그래머스 코딩테스트] 음양 더하기 본문
[음양 더하기]
문제 설명 :
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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;
for (let i = 0; i < signs.length; i++) {
if (signs[i] === false) { // if문으로 signs의 value를 부르고 false(-) 라면
answer += absolutes[i] * -1; // absolutes의 value에 -1을 곱하여 음수를 전환
} else {
answer += absolutes[i];
}
}
return answer;
}
📑 간단한 설명
if문으로 음수 조건 걸고, 실행문에서 -1 곱하여 계산하였습니다.
뭔가 if문만 많이 사용하고 다른 함수들은 잘 살펴보지 않는 것 같아서 좀 그렇지만.. 다른 것 보고 많이 공부해야겠습니다..
💪🏻 공부하면 좋을 답안
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
- * .reduce(acc, cur, idx, src) : acc는 누적 값, cur은 현재값, idx는 인덱스, src는 원본배열
- map이 배열의 각 요소를 변형한다면 reduce는 배열 자체를 변형합니다.(reduce라는 이름은 이 메서드가 보통 배열을 값 하나로 줄이는 데 쓰이기 때문에 붙었다)
- 공부하면서 해석한 것은 아래에 붙여놓았다.
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
// absolutes배열의 reduce 함수 실행 (아래 설명 칸은 백틱을 쓰겠음)
// 함수의 파라미터는 (acc`누적값`, val`현재값`, i`인덱스` => acc`누적값` + (val`현재값` * (sign[i]`부호` ? 1 : -1)), 0`src 혹은 initialValue);
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
http://reduce.surge.sh/ (reduce 함수를 시각화해서 잘 보여주는 사이트)
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] 핸드폰 번호 가리기 (0) | 2022.01.15 |
---|---|
[프로그래머스 코딩테스트] 평균 구하기 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 문자열을 정수로 바꾸기 (0) | 2022.01.14 |
[프로그래머스 코딩테스트] 없는 숫자 더하기 (0) | 2022.01.14 |
[프로그래머스 코딩테스트] 두 정수 사이의 합 (0) | 2022.01.14 |
Comments