문제 설명
어떤 정수들이 있습니다.

이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를

차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다.

실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한 사항
  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

입출력 예

<aside> 📌 우리가 작성할 solution 함수의 실제 input과 올바른 output의 명세 입니다.

absolutes signs result
4,7,12 true,false,true 9
1,2,3 false,false,true 0

이번 문제 역시 해답 코드 풀이 영상을 보면서 진행 하였다.

function solution(absolutes, signs) {
    var answer = 0;

    for (var i = 0; i < absolutes.length; i++) {
        if (signs[i] === true) {
            answer = answer + absolutes[i]
        }
        else if (signs[i] === false) {
            answer = answer - absolutes[i]
        }
    }

    return answer;
}

answer를 0으로 지정해주었다.

* 처음에 영상에서 아무 설명없이 바로 0으로 지정해주길래 왜지.. 왜지.. 생각했는데 0으로 지정해준 이유는

answer에다가  absolutes값들을 더하고 빼주기 위해 0으로 지정해준 것이다.

 

for 반복문을 통해 i를 0번째로 지정하고 absolutes 의 길이만큼 반복시키며 할때마다 1추가

 

true 일경우 answer + absolutes[i] , false 일경우 answer - absolutes[i] 를 통해 음수 양수를 구별해준다!

 

알고리즘을 할때마다 스스로 한게 아니라 그런가 만족스럽지 못하다..

뭔가 더 짧게 수정이 가능할거같다는 느낌적인 느낌..

 

그래서 약간의 수정을 해봤는데 잘 돌아간다!

 

function solution(absolutes, signs) {
    var answer = 0;

    for (var i = 0; i < absolutes.length; i++) {
        if (signs[i] === true) {
            answer +=absolutes[i]
        }
        else {
            answer -=absolutes[i]
        }
    }

    return answer;
}

그냥 생략해줄수 있는 부분들만 생략해준거라 똑같은 코드라 봐도 될 듯 하다?

 

하지만 나는 처음 혼자 해볼려했을때 forEach를 사용해볼려 했다.. 뭔가 그럼 더 짧게 될 거 같기도 하고..???

 

그리고 answer 를 0으로 지정하지말고 그냥 시작하는 absolutes 의 값부터 시작하면 되지 않나 싶다.

 

다음시간에!

'Algorithm' 카테고리의 다른 글

나이 비교  (0) 2023.05.31
n번째 글자를 기준으로 오름차순 정렬!  (0) 2023.05.31
문자열에 특정 문자 개수 비교  (0) 2023.05.30