티스토리 뷰
Difficulty | Easy |
Language | Javascript |
Problem (문제)
You are in charge of the cake for your niece's birthday and have decided the cake will have one candle for each year of her total age. When she blows out the candles, she’ll only be able to blow out the tallest ones. Your task is to find out how many candles she can successfully blow out.
당신은 당신의 조카 생일을 위해 케이크를 담당하고 있으며 케이크는 그녀의 연령만큼 양초를 가질 것이라고 결정했습니다. 그녀가 양초을 불면 가장 큰 양초만 끌 수 있습니다. 그녀가 끌 수 있는 양초의 개수를 구해보세요.
For example, if your niece is turning 4 years old, and the cake will have 4 candles of height 4, 4, 1, 3, she will be able to blow out 2 candles successfully, since the tallest candles are of height 4 and there are 2 such candles.
예를 들어, 당신의 조카가 4살이 되었고, 케이크는 길이가 4, 4, 1, 3인 양초 4개를 가진다면 가장 큰 양초의 길이는 4이고 2개이기 때문에 그녀는 2개의 양초만 끌 수 있습니다.
----- 수정 2020-12-02 (문제 변경) -----
You are in charge of the cake for a child's birthday. You have decided the cake will have one candle for each year of their total age. They will only be able to blow out the tallest of the candles. Count how many candles are tallest.
당신은 아이의 생일을 위해 케이크를 담당하고 있다. 케이크는 연령의 개수만큼 양초를 가질 것이라 결정했다. 그들은 가장 길이가 긴 양초만 끌 수 있다. 가장 긴 양초가 몇 개인지 계산하세요.
Function Description (함수 설명)
Complete the function birthdayCakeCandles in the editor below. It must return an integer representing the number of candles she can blow out.
birthdayCakeCandles 함수를 아래의 에디터에서 완성하세요. 그것은 그녀가 끌 수 있는 양초의 개수를 나타내는 정수를 반환해야 합니다.
birthdayCakeCandles has the following parameter(s):
birthdayCakeCandles는 다음과 같은 매개 변수가 있습니다.
- ar: an array of integers representing candle heights ar(양초의 길이가 담긴 정수 배열)
----- 수정 2020-12-02 (함수 설명 변경) -----
Complete the function birthdayCakeCandles in the editor below.
birthdayCakeCandles 함수를 아래의 에디터에서 완성하세요.
birthdayCakeCandles has the following parameter(s):
birthdayCakeCandles는 다음과 같은 매개 변수가 있습니다.
- int candles[n]: the candle heights (양초들의 길이)
Solution (풀이)
function birthdayCakeCandles(candles) {
// 내림차순 정렬
candles.sort((a, b) => a - b > 0 ? -1 : a - b < 0 ? 1 : 0);
const length = candles.length; // 효율적인 시간 관리를 위해 배열의 길이 저장
let highestHeight = candles[0]; // 가장 긴 양초의 길이
let count = 1 // 가장 긴 양초의 개수
for(let i=1; i<length; i++) {
if(candles[i] !== highestHeight) break;
else count++;
}
return count;
}
가장 길이가 긴 양초의 개수를 세는 문제로 가장 긴 길이를 구하고 그 길이가 배열에 몇 개가 있는지 확인해야 한다. 먼저 candles를 내림차순해준다. 만약 처음 받은 candles가 다음과 같다면
[3, 2, 1, 3]
내림차순으로 정렬하고 나면 다음과 같다.
[3, 3, 2, 1]
이렇게 하고 나면 가장 앞에 있는 양초가 가장 긴 길이가 되고 뒤로 갈수록 길이가 짧아진다. 그래서 가장 긴 양초의 길이를 구하고 반복문을 돌리면서 비교하며 다를 경우 반복문을 끝내고 개수를 반환한다.
'Algorithms > Hacker Rank' 카테고리의 다른 글
[Hacker Rank] Extra Long Factorials (Go) (0) | 2020.12.08 |
---|---|
[Hacker Rank] Apple and Orange (Javascript) (2) | 2020.12.07 |
[Hacker Rank] Staircase (Javascript) (0) | 2020.11.30 |
[Hacker Rank] Diagonal Difference (Javascript) (0) | 2020.09.18 |