본문 바로가기
코테연습

46. 음양더하기

by hxunz 2022. 5. 17.

https://programmers.co.kr/learn/courses/30/lessons/76501

 

코딩테스트 연습 - 음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

programmers.co.kr

 

1. 이해

정수들의 배열 absolutes가 주어진다
이 정수들의 음양을 판별할 불리언 배열 signs가 주어진다.
음양을 올바르게 판별하고 그 숫자들을 더한다.

 

2. 계획

absolutes와 signs를 반복으로 돈다
배열 내 각 요소를 비교한다.
signs가 true면 양수
signs가 false면 음수
이렇게 판별한 값들을 더해준다.

 

 

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

우선, 처음에 급박하게 생각나는대로 풀었던 코드

간단하게 for 반복문을 사용해서 풀었다. 

signs가 true면 absolutes 숫자 그냥 result에 더해주고

signs가 false면 absolutes 숫자에 -1을 곱해서 음수를 만들어서 result에 더해주었다.

 

쓰면서 생각해보니까 -1 안곱하고 그냥 absolutes 숫자를 result에 빼줘도 될듯,,?

 

 

function solution(absolutes, signs) {
  return absolutes.reduce(
    (prev, curr, index) => prev + curr * (signs[index] === true ? 1 : -1),
    0
  );
}

reduce를 사용해서도 풀어봤다.

absolutes내 요소들 하나씩 값을 누적해서 더한 값을 리턴하도록 했다.

콜백에 index를 넣어주었다.

코드를 간결하게 나타내기 위해서 삼항연산자를 사용했다.

signs[index]가 true면 1을 곱해주고 

false면 -1을 곱해주도록 했다.

초기값은 0으로 설정해줬다.

'코테연습' 카테고리의 다른 글

47-2. 3진법 뒤집기(2)  (0) 2022.05.18
47-1. 3진법 뒤집기  (0) 2022.05.17
45. 키패드 누르기  (0) 2022.05.17
44. 없는 숫자 더하기  (0) 2022.05.13
43. 크레인 인형 뽑기 게임  (0) 2022.05.13

댓글