알고리즘, 자료구조/프로그래머스

프로그래머스/음양 더하기/javascript

soohkang 2021. 6. 27. 15:00
728x90

상대적으로 쉽게 생각되는 문제를 만났다, 6달 전의 나라면 어림없었을 거다.

기쁜 마음으로 풀이를 남겨본다. 답을 맞혔더라도 다른 분들 코드를 찾아보는 것을 잊지 말자, 다양한 코드 읽는 것은 언제나 중요한 일!

 

나의 코드

function solution(absolutes, signs) {
    var answer = 123456789;
    let valueTemp = [];
    let valueFinal = [];
    
    // false -, true +
    // 1. 불리언 값을 연산자로 변환한다.
    const exchangeSigns = signs.map( currentValue => currentValue ? '+' : '-');
    
    // 2. 주어진 숫자에 변환한 연산자를 붙여주고, 숫자와 연산자를 붙인 값을 valueTemp에 밀어넣는다.
    absolutes.forEach( (element, index) => {
        valueTemp.push(exchangeSigns[index] + element);
    })
    
    // 3. valueTemp에 있는 string 값을 연산할 수 있는 값으로 변환한다.
    valueTemp.forEach( element => {
        valueFinal.push(parseInt(element));
    })
    
    // 4. 숫자로 변환된 값을 연산해준다.
    const reducer = (accumulator, currentValue) => accumulator + currentValue;
    answer = valueFinal.reduce(reducer);
    
    return answer;
}

 

 

생각 전개 및 느낀 점

  1. 코드에 작성된 주석을 참고
  2. valueTemp 명칭이 코드를 읽는데 방해가 될까 봐 좀 고민되었는데 값을 임시로 담는 배열 정도의 의미를 두고 싶어서 valueTemp라고 결정했다.
  3. valueFinal 변수는 결괏값 answer를 리턴하기 전 마지막 value를 취합하는 장소? 여서 final을 붙였다. 혼자서라도 의미 부여해서 변수를 작성해보려고 고민을 좀 해보았다.
  4. reduce를 스스로 떠올려서 사용해볼 수 있어서 좋았다.

 

 

다른 분들 코드

복습할 때 추가 예정

 

 

 

 

출처:

https://programmers.co.kr/learn/courses/30/lessons/76501?language=javascript 

 

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

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

programmers.co.kr