[프로그래머스 level1] 음양 더하기

김예지·2021년 10월 9일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/76501


문제 풀이

코드1

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

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

코드2

배열을 더하는 문제에서는 Array.reduce 메소드를 활용하자! for문을 활용하는 것보다 훨씬 간단하게 끝낼 수 있다.

function solution(absolutes, signs) {
    return absolutes.reduce((acc, v, i) =>acc + (v*(signs[i]? 1 : -1)), 0);
}

오류코드 고치기

오류코드는 다음과 같다.

function solution(absolutes, signs) {
    return absolutes.reduce((acc, v, i) => {
        acc + (v*(signs[i]? 1 : -1));
    }, 0);
}

오류를 해결하면 다음과 같다.

function solution(absolutes, signs) {
    return absolutes.reduce((acc, v, i) => {
        return acc + (v*(signs[i]? 1 : -1));
    }, 0);
}

콜백함수에서 {}를 넣으면, 한줄이라도 반드시 return 해주기!
만약, 한줄이여서 중괄호를 생략한다면, 코드2처럼 return 생략 가능하다.
중괄호의 뜻은 코드가 한줄 이상이라는 뜻이기 때문에, 한줄 이상의 코드 중 무엇을 return해줄지를 지정해줘야한다. 한줄이라도 예외없음!

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 25일

10/25
reduce 사용해보기
if(signs[i]==='true')로하면 안됨. signs안에 들어가있는 true, false는 문자가 아니라 boolean형태이기 때문에 if(signs[i])와 같은 형태로 작성하면 if(true)라는 소리와 같음.

답글 달기