programming

해커랭크 Birthday Cake Candles 파이썬 풀이


by Kitle · 2020. 08. 16.



Hackerrank 알고리즘 퀴즈 중 Birthday Cake Candles 퀴즈의 파이썬 풀이 및 해설 시작하도록 하겠습니다.


문제요약

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이고, 높이가 4인 양초는 2개가 있으므로  양초 2 개를 성공적으로 꺼낼 수 있습니다. 

풀이 소스 - Python3

#!/bin/python3

import math
import os
import random
import re
import sys


# Complete the birthdayCakeCandles function below.
def birthdayCakeCandles(ar):
return ar.count(max(ar))


if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')

ar_count = int(input())

ar = list(map(int, input().rstrip().split()))

result = birthdayCakeCandles(ar)

fptr.write(str(result) + '\n')

fptr.close()


솔루션 및 해설

문제와 설명은 거창하지만 쉬운 레벨의 퀴즈입니다. 결국 주어진 리스에서 가장 큰 수를 찾고 가장 큰 수가 몇개가 있는지 찾으면 됩니다. 파이썬에서 가장큰 수를 찾는 방법은 max() 함수를 이용하는 것입니다. max(ar) 을 통해 우리는 ar의 가장 큰 값을 알 수 있습니다. 

두번째로는 가장 큰 값이 몇개가 있는지 알고 싶습니다. 이부분은 count() 를 통해 알 수 있습니다. 그러면 가장 큰 값을 구하고 카운트를 하면 되겠구나 생각하시면 됩니다. 이를 한번에 쓰고자 하면 어떻게 해야 할까요. 아주 쉽습니다. 말그대로 가장 큰 값을 먼저 구합니다. max(ar) 그리고 그것을 count() 로 감싸주면 최대값을 구한 후 최대값의 카운트를 해주면 됩니다. count(max(ar) 입니다. ()안의 max() 가 먼저 처리되고 처리된 결과를 count() 가 처리해 줍니다. 이렇게 나온 값을 return해주면 되므로 바로 return count(max(ar))로 한번에 깔끔하게 처리할 수 있습니다.

이상으로 풀이와 해설을 마칩니다. 원본 퀴즈 출처와 풀이는 다음에서 확인해보세요. 


출처 : 원문으로 이동

풀이 소스 : 깃허브로 이동