-
코딩테스트에 많이 쓰이는 자바스크립트 메서드 reduce(), 누적값, 중복요소 찾기Algorithm 2023. 4. 19. 12:07728x90
일주일동안 코테준비로 아주 정신없이 흘러갔다!
아직 알고리즘 문제를 많이 푼건 아니지만 (총 60문제정도?)
난이도가 높아지면서 공통적으로 자주쓰이는 자바스크립트 메서드 중 하나로 reduce함수를 정리해봤다
누적값이 필요할 때, 혹은 중복을 찾을 때 Reduce메서드
자바스크립트의 reduce함수는 배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환 합니다.
const numbers = [1,2,3,4] numbers.reduce( //첫번째 파라미터 : 콜백함수 (누산값,현재요소값,현재요소index,현재배열)=> { return 다음누산값 }, //두번째 파라미터: 초기 누산값 초기누산값)
요소를 모두 합한 값을 구할 때도 간단히
Array.reduce((acc,cur)=> acc+cur) 로 쓰이고const numbers = [1, 2, 3, 4]; const sum = numbers.reduce((acc, el, i) => { console.log(`${i}번째 콜백함수`) console.log(`acc: ${acc}`); console.log(`el: ${el}`); return el + acc; }, 0); console.log(`-----------`); console.log(`sum: ${sum}`);
이렇게 출력을 해보면
이렇게 알잘딱깔센!
reduce((누적값, 현재요소, 인덱스)=>...)
문제를 풀다보면 중복된 요소가 몇개인지 파악해야하는 경우가 종종 있는데 그럴 때마다 사용하는 함수는
const count = ar.reduce((acc, cur) => { if (acc[cur]) { acc[cur]++; } else { acc[cur] = 1; } return acc; }, {});
바로 이거!
두 번째 인자를 보면 object가 초깃값임을 알 수 있다. 위 함수를 통해 배열 ar 내의 요소를 반복하면서 각 요소의 등장 횟수를 계산할 수 있다.
최대한 외워서 써보려고하는 중
그리고 같이 많이 쓰이는 문법은
for (let key in count) { answer += Math.floor(count[key] / 2); }
객체에서 key값에 접근하는 문법!
reduce를 사용하지 않은, 중복요소를 모두 배열에 담는 식
const duplicates = arr.reduce((acc, item) => { if (arr.indexOf(item) !== arr.lastIndexOf(item) && !acc.includes(item)) { acc.push(item); } return acc; }, []);
728x90'Algorithm' 카테고리의 다른 글
[깊이우선탐색] 프로그래머스 타겟넘버 (1) 2024.10.12 HackerRank 문제 해석, 풀이 Apple and Orange-Java script (0) 2023.04.12 HackerRank 문제 해석, 풀이 Grading Student - Java script (0) 2023.04.12 알고리즘 하드코딩 장인 [프로그래머스] 약수의 개수와 덧셈 (코드 간결화) (0) 2023.04.11 HackerRank 문제 해석, 풀이 Plus Minus- Java script (0) 2023.04.06