프로그래머스 코테 풀기 귤 고르기
포인트
- forEach: 배열의 각 요소에 대해 주어진 함수를 실행합니다. 주로 부수 효과(side effects)를 위한 목적으로 사용됩니다. 예를 들어, 배열의 각 요소를 콘솔에 출력하거나 외부 상태를 변경하는 데 사용합니다.
- map: 배열의 각 요소에 대해 주어진 함수를 호출하고, 그 결과로 새로운 배열을 생성합니다. 주로 배열의 변환을 위해 사용됩니다.
중단 가능성
- forEach: 반복을 중단할 수 없습니다. 모든 요소를 처리해야 합니다.
- map: 모든 요소를 처리해야 하므로 중단할 수 없습니다. 하지만 map은 변환된 결과를 반환하기 때문에 중단할 필요가 없습니다.
성능
- forEach: 단순히 요소를 반복하는 데 최적화되어 있습니다.
- map: 새로운 배열을 생성하는 데 추가적인 메모리와 시간이 필요합니다.
수정한점
- 배열의 마지막인 경우, 다음 index 미존재로 return이 안되는 경우가 발생했다. 현재 차례에서 계산한 값이 조건을 만족하는지로 수정해주었다.
function solution(k, tangerine) {
let tDict = {};
let sum=0;
tangerine.forEach((t) => (tDict[t] = (tDict[t] || 0) + 1));
const tArr = Object.values(tDict).sort((a, b) => b - a);
for(i=0; i<tArr.length; i++){
sum += tArr[i]
if(sum >= k) return i+1
}
}