05. 프로그래머스(1단계) - 음양 더하기

성훈·2021년 7월 30일
0

Algorithm

목록 보기
5/61
post-thumbnail

📌 문제의 조건

  1. 함수의 인자로 정수의 절댓값이 들어있는 배열과 그 정수의 기호가 참거짓으로 들어있는 배열을 받음.
  2. 정수들의 합

제한사항 🤔

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

📌 풀이

의사 코드 👨‍💻

  1. 인덱스를 사용해야하니 반복문 사용한다.
  2. 배열에 절댓값 임을 생각해서 같은 인덱스의 값이 참이면 +, 거짓이면 -한다.

첫 풀이 👨‍💻

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

더 생각한 후 풀이 👨‍💻

function solution(absolutes, signs){
	return absolutes.reduce((acc, cur, idx) => signs[idx] ? acc+cur : acc-cur, 0)
}

📌 리뷰

처음엔 리듀스의 세번째 인자로 cur의 인덱스가 들어온다는거 생각을 안하고 포루프 돌려야겠구나 싶었는데, 기억해내서 한번 써봤다.

리듀스 콜백함수 안에서 삼항연산자 사용할때
{ signs[idx] ? return acc + cur : return acc - cur }
로 사용하니 에러가 발생하던데 조금 알아봐야겠다.

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글