1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/76501
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 나의 풀이
reduce를 이용하여 계산. if문으로 더하기와 빼기를 조건부 적용하였다.
function solution(absolutes, signs) {
return absolutes.reduce((calc, curr, idx) => {
if(signs[idx]) return calc += curr;
return calc -= curr;
}, 0)
}
3. 다른 사람 풀이
프로그래머스의 다른 사람의 풀이를 분석함
비슷한 접근법인데 더 깔끔
삼항연산자를 이용하여 1과 -1을 곱해주어 signs를 적용해주었다.
acc에 더한 값을 return만 해줘도 acc에 대입돼있구나..
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
4. 배운 점
- +, - 기호를 적용할 때 1과 -1을 곱해버리면 됨.
- reduce의 acc에 =로 대입을 해줄 필요없이 return하면 acc에 대입됨
- 반복문 성능: $.each(제이쿼리 객체) > map > filter == forEach > reduce > for loop 순.
reduce는 내부적으로 최적화가 이루어져있고 가독성과 유지보수성이 좋습니다 코드가 간결해지고 어떨때에는 for문보다 빠릅니다.
'알고리즘, CS' 카테고리의 다른 글
| [프로그래머스 Lv. 1] 가운데 글자 가져오기 (0) | 2023.08.01 |
|---|---|
| [특강] 클린코드_의미 있는 변수명 짓기 (0) | 2023.08.01 |
| [프로그래머스 Lv. 1] 콜라츠 추측 (0) | 2023.07.28 |
| HTTP (0) | 2023.07.06 |
| [프로그래머스 Lv. 0] 2차원으로 만들기 (0) | 2023.06.16 |