본문 바로가기
코딩 테스트 연습/프로그래머스 level 1

[프로그래머스] lv1. 음양 더하기 (JS)

by 카누가 좋아요 2023. 7. 6.

❓ 문제

코딩테스트 연습 - 음양 더하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

💡 해결하기

숫자의 부호를 알려주는 signs 배열의 요소들을 하나씩 돌면서 그것이 false일 경우에는 음수라는 의미이므로 absolutes 배열에서 그 요소의 인덱스에 해당하는 숫자를 음수로 만들어 준 후 누적하고, true일 경우는 양수라는 의미이므로 부호를 바꾸지 않고 그 요소의 인덱스에 해당하는 숫자를 그대로 누적하면 된다.

 

💻 JS로 코드 작성하기 

 

function solution(absolutes, signs) {
  let result = 0;
  for (let i = 0; i < signs.length; i++) {
    signs[i] ? (result += absolutes[i]) : (result += -absolutes[i]);
  }
  return result;
}

 

 

reduce를 사용한 다른 사람의 코드도 가져와 봤다.

 

function solution(absolutes, signs) {
  return absolutes.reduce((acc, val, i) => acc + val * (signs[i] ? 1 : -1), 0);
}

 

이 코드는 absolutes 배열의 숫자들을 하나씩 돌면서 signs 배열에서 해당 인덱스의 값이 true인 경우 양수이므로 현재 숫자에 1을 곱하고, false인 경우 음수이므로 현재 숫자에 -1을 곱한 후 누적해나가는 코드이다.

for문을 사용하는 것보다 훨씬 더 간결하게 작성할 수 있다.

댓글