본문 바로가기
알고리즘 테스트/프로그래머스

음양 더하기 [JS]

by 괴코딩 2023. 5. 26.

문제 설명

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

 

제한사항
  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
 
입출력 예
absolutes signs result
[4, 7, 12] [true, false, true] 9
[1, 2, 3] [false, false, true] 0
 
입출력 예 설명

입출력 예 #1

  • signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
  • 따라서 세 수의 합인 9를 return 해야 합니다.

입출력 예 #2

  • signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
  • 따라서 세 수의 합인 0을 return 해야 합니다.

 

function solution(absolutes, signs) {
  array.absolutes = 1 <= absolutes.length <= 1000;
  var signs = absolutes.length;

  for (signs = 1; signs <= 1000; signs++) {
    if (signs[i] === true) {
      return +absolutes[i];
    }
    if (signs[i] === false) {
      return -absolutes[i];
    }
  }
}

let num = absolutes.map(function (item) {
  return (num += item);
});

var answer = num;
return answer;
  1. for문으로 배열을 나열해서
  2. signs 배열의 인덱스 값이 true 또는 false 일 때 absolutes 배열에 +-기호를 부여하면 되지않을까
  3. 그리고 그 absolutes의 인덱스들을 다 더한다면?

 

라고 생각해 보았다.

 

그런데 이 각각의 인덱스 값들을 더 하고 싶을 때 어떤 메소드를 사용해야할지 감도 오지 않았는데

혹시 map으로 가능한가해서

 

let num = absolutes.map(function (item) {return (num += item); });

 

라고 해봤더니 역시나 안된다고 오류라고 하더라..

2번째 문제 역시도 아무리 고민해봐도 답이 안나와서 해설영상을 보게 되었다.

 

1. return 해야 하는 answer변수에 값을 할당.

   결국에 선언해야 하는 값은 number니까,, 일단 0으로 선언

   항상 이걸 어떻게 숫자로 인식하게 하지에 대한 고민이 많았는데 이렇게 해도 되는구나.

2. 두 배열을 비교해 가면서 값을 더하거나 빼줄 것

3. 출력

 

absolutes든 signs든 변수니까 let 선언해서 어떤 값을 할당 해두고 사용해야 한다고 생각했는데, 이미 제한사항에 조건으로 들어가 있으니 따로 ‘저 아이가 어떤 아이다’ 라고 알려줄 필요는 없었던 것 같다.

결국 난 필요없는 고민을 열심히 한 셈

 

답안이다

 

function solution(absolutes, signs) {
    let answer = 0;
		// 두 배열 길이 같음
    for (let i = 0; i < absolutes.length; i++) {
				// 부호에 따라 +-
        signs[i] ? answer += absolutes[i] : answer -= absolutes[i]
    }
    return answer;
}

이제 보니 너무 간단 한 것.. 오늘도 털리고 갑니다..

반응형

'알고리즘 테스트 > 프로그래머스' 카테고리의 다른 글

배열 두 배 만들기 [JS]  (0) 2023.06.09
문자열 내 마음대로 정렬하기 [JS]  (0) 2023.05.26
문자열 내 p와 y의 개수 [JS]  (0) 2023.05.26
짝수의 합 [JS]  (0) 2023.05.26
각도기 [JS]  (0) 2023.05.26