본문 바로가기
부트캠프 개발일지 2023-2024/Algorithm 알고리즘

[Programmers] 알고리즘: 음양 더하기

by whereanna00 2023. 11. 30.
 

프로그래머스

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

programmers.co.kr

 

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

 


Approach

  • 숫자를 담은 absolutes의 요소 하나 하나를 돌며, signs의 i 번째 요소가 true일 때 +absolute, false일때 -absolute을 반환한다. 
  • 그렇게 반환된 배열의 요소들 간의 합을 구한다.

map, 삼항연산자 활용

function solution(absolutes, signs) {
  const answer = absolutes.map((absolute,i)=>signs[i]? +absolute:-absolute).reduce((a,b)=> a+b)
  return answer;
}

 

반복문, if문 활용

function solution(absolutes, signs) {
  // 1. return 해야하는 answer 생성; 
  // 결국 출력해야하는 값이 숫자이기 때문에 0으로 시작하기
  var answer = 0 

  // 2. 두 배열을 비교해 가며 값을 더하거나 빼줄 것
  // 2-1. 두 배열은 크기가 같음
  for(var i = 0; i<absolutes.length; i++) { //absolutes 나 signs 둘 중 하나만 선택해서 돌려도 상관 없다.
    // 부호(+-)에 따른 처리
    if(signs[i] === true)  { // 만약에 signs의 i 번째 요소가 true 이면
        // 값이 true 인 경우(양수)
        answer = answer + absolutes[i];
    } else if (signs[i] === false){
        // 값이 false 인 경우(음수)
        answer = answer - absolutes[i];
    }
  }
  // 3. 출력
  return answer;
}

 

map, if 문 활용

function solution(absolutes, signs) {
    const answer = absolutes.map((absolute,i)=> {
        if(signs[i]===true){
            return +absolute;
        } else {
            return -absolute;
        }
    })
    .reduce((a,b)=> a+b)

  return answer;
}

 

 

728x90
반응형