프로그래머스 풀이/level1

[Programmers] level 1) 문제 '음양 더하기' 풀이 ***

진기명기 2023. 5. 14. 15:04
🫠 Programmers (level 1) 👉🏻 문제 17번 (음양 더하기)

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

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

✏️ 입출력 예
absolutes       signs                       result
[4,7,12]           [true, false, true]      9
[1,2,3]             [false, false, true]     0

 

 

 

 

 


function solution(absolutes, signs) {
  for(let i = 0; i < absolutes.length; i++) {
      if(signs[i] === false) {
          absolutes[i] = absolutes[i] * -1
      }
  }
    
  return absolutes.reduce((acc, item) => acc + item ,0)
}
✅ for문을 통해 false인 index만 absolutes에 * -1을 해주었다.

 

 

💡 다른 사람 풀이

function solution(absolutes, signs) {
  return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
✅ ㅎ.. reduce에서 i를 이용하여 바로 계산하다니,, reduce에서 항상 acc랑 item 값만 사용해서 i값을 사용할 생각을 아예 못했다.. 반성하자 🤦‍♀️