이노캠 4주차(토) boolean-Javascript

rimhye·2023년 6월 17일
0

이노캠

목록 보기
14/39

📌음양 더하기 문제

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

  • absolutes의 길이는 1 이상 1,000 이하입니다.
  • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
  • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

입출력예)

absolutessignsresult
[4,7,12][true,false,true]9
[1,2,3][false,false,true]0

🔨 시행착오

signs의 요소값이 true나 false일때에 따라 음수나 양수가 나오도록 조건식을 만들때 시행착오가 있었다. 처음에 나는 if(signs[i]===true)를 넣어 absolutes를 음수와 양수로 출력할 수 있도록 코드를 짜려고 했는데 자꾸 저 if문이 틀렸다고 나왔다. 그래서 true로 바꿔보기도 하고 ===를 ==로 바꿔보기도 하다가 true란 값이 어떻게 나오는지 파악하지 못하고 있다는 사실을 깨닫고 찾아보았다. 그래서 값을 boolean으로 변환하는 방법에 대해 서치해보았다.

🔔자바스크립트에서 boolean값으로 변환하기

부정 연산자!뒤의 값이 truthy이면 false , falsy이면 true 를 반환하는 성질을 이용해서 이중 부정을 통해 값을 boolean 타입으로 변환할 수 있다. 만약 부정한 값을 다시 복원하고 싶다면 !!를 값 앞에 둬서 부정을 다시 부정해서 복원하면 된다.

✅추가로 알면 좋을 것들!

이걸 보고 if문을 삼항 연산자로 바꿔 코드를 짰고 잘 돌아갔다.

[최종코드]

function solution(absolutes, signs) {
    var sum=0;
    for(i=0;i<signs.length;i++){
        let result = !signs[i]? absolutes[i]*(-1):absolutes[i]
        sum+=result;}
     return sum;
}

✍️ 느낀점

지금 이노캠 알고리즘 1주차라 프로그래머스를 열심히 푸는 중인데 처음엔 당황과 자괴감의 연속이었지만 점점 구조에 대해 알아가고 있다고 느꼈다. for문이나 if문같은 것들이 구조를 파악하기 힘들었는데 문제를 풀다보니 얘들을 제일 많이 쓰고 있어서 좀 웃겼다.😂😂 알고리즘 문제 마라톤 부분까지 해내고 나면 JS문법 종합반 4주차를 목표로 달려야겠다.

profile
개발자가 되고 싶어요

0개의 댓글