본문 바로가기

Fundamentals/Algorithms

[해커랭크] Birthday Cake Candles

문제링크

 

Birthday Cake Candles | HackerRank

Determine the number of candles that are blown out.

www.hackerrank.com

어린이의 생일 케이크를 담당하고 있으며, 케이크에는 그들의 나이만큼의 촛불이 있습니다.

가장 높은 촛불만 불어서 끌 수 있습니다.

가장 높은 촛불이 몇 개인지 세는 것이 문제의 목표입니다.

 

풀이 :

 

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