프로그래머스 369게임 자바스크립트 | reduce()

Chaeyeon Lee·2023년 5월 25일
0

🔅 1. 아이디어

정수를 문자열 변환->배열변환 해서 각 원소가 3의 배수이면 ans에 1씩 저장하기.
근데 이걸 reduce로 풀어볼까요 굳이?


🧑‍💻 2. 내 코드

function solution(order) {
    let strOrder=String(order);
    let count=[...strOrder].reduce((a, c)=> c%3==0 && c!=0 ? a+1 : a+=0, 0);
    return count;
    
}

🐣 3. 개념

📌 reduce() 설명

위 코드를 보면... 그 당시에 나 어떻게 저런 생각을 했지 싶다. 남에 거 보고 긁어 왔나?
reduce((a, c)=> c%3==0 && c!=0 ? a+1 : a+=0, 0)
(1) 초기값은 0임. c는 strOrder의 첫 번째 원소다. c가 3의 배수이고, 0이 아닌지 판별한다.
(2) c가 3의 배수라면, a에 1을 더한다. 아니라면, a에 0을 더함. 근데 아무것도 동작하고 싶지 않을 때에는 어떻게 써야 하지?
(3) c가 3의 배수였어서 a=1이 되고, c는 strOrder의 두 번째 원소가 된다. c가 3의 배수이고, 0이 아닌지 판별한다.
(4) 반복

새롭게 알게 된 점은...
오로지 c를 조건을 판별하는 데에 쓰고, 반환값은 a로만 쓸 수 있다는 것이다.
항상 a랑 c가 어떻게 연결 되어야 하는 줄 알았는데, 그러지 않아도 되었다.
또한 reduce 안에서도 조건문을 사용할 수 있다는 것이다.

생각해보면, reduce()도 메서드이므로 콜백함수를 작성할 수 있었다!! 내가 너무 틀에 박혀서 사고하였던 거였음.

profile
프론트엔드 개발자 지망생

0개의 댓글