어린이의 생일 케이크를 담당하고 있으며, 케이크에는 그들의 나이만큼의 촛불이 있습니다.
가장 높은 촛불만 불어서 끌 수 있습니다.
가장 높은 촛불이 몇 개인지 세는 것이 문제의 목표입니다.
풀이 :
function birthdayCakeCandles(candles: number[]): number {
const max = Math.max(...candles);
return candles.filter(candle => candle === max).length;
}
Math.max 함수를 사용하여 배열에서 최대값을 찾고 filter 메소드를 사용하여 최대값과 동일한 원소들을 필터링하여 길이를 반환합니다.
다른 풀이 :
function findMaxInArray (numbers: number[]) {
return numbers.reduce((maxValue, current) => Math.max(maxValue,current), -Infinity)
}
function birthdayCakeCandles(candles: number[]): number {
const max = findMaxInArray(candles)
return candles.filter(candle => candle === max).length;
}
스프레드 연산자로 처리할 경우 배열 요소가 너무 많은 경우 잘못된 결과를 반환할 수 있기 때문에 reduce 메서드로 처리하였으며 함수형 프로그래밍을 고려하여 재사용할 수 있는 함수는 분리하였습니다.
'Fundamentals > Algorithms' 카테고리의 다른 글
[해커랭크] Grading Students (0) | 2023.11.16 |
---|---|
[해커랭크] Time Conversion (0) | 2023.11.16 |
[해커랭크] Staircase (0) | 2023.11.15 |
[해커랭크] Mini-Max Sum (0) | 2023.11.14 |
[해커랭크] Diagonal Difference (0) | 2023.11.13 |