Hackerrank 알고리즘 퀴즈 The Time in Words 파이썬 풀이 및 해설
Hackerrank 알고리즘 퀴즈인 The Time in Words 파이썬으로 풀고 설명해드리겠습니다.
문제 출처 : 해커랭크로이동
풀이 소스 깃허브에서 보기 : 깃허브로 이동
문제 요약
Given the time in numerals we may convert it into words, as shown below:

솔루션
풀이
#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the timeInWords function below.
def timeInWords(h, m):
dict = {
1:'one',
2:'two',
3:'three',
4:'four',
5:'five',
6:'six',
7:'seven',
8:'eight',
9:'nine',
10:'ten',
11:'eleven',
12:'twelve',
13:'thirteen',
14:'fourteen',
15:'quarter',
16:'sixteen',
17:'seventeen',
18:'eighteen',
19:'nineteen',
20:'twenty',
30:'half',
}
if m == 00:
return dict[h]+" o' clock"
elif int(m) == 1:
return dict[int(m)]+' minute past '+dict[h]
elif int(m) in (15, 30):
return dict[int(m)]+' past '+dict[h]
elif int(m) <= 20:
return dict[int(m)]+' minutes past '+dict[h]
elif 20 < int(m) < 30:
return dict[20]+' '+dict[int(m)-20]+' minutes past '+dict[h]
elif int(m) == 45:
return dict[15] + ' to ' + dict[h+1]
elif int(m) < 60:
conv_m = 60 - int(m)
if 20 < conv_m < 30:
return dict[20] + ' ' + dict[conv_m-20] + ' minutes to ' + dict[h+1]
else:
return dict[conv_m] + ' minutes to ' + dict[h+1]
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
h = int(input())
m = int(input())
result = timeInWords(h, m)
fptr.write(result + '\n')
fptr.close()
풀고나니 그냥 dict로 다 처리해버리는 것은 어떨까 생각도 되긴 합니다. 시간관련 다양한 생각을 해볼 수 있을 것 같네요. 예제에는 없었지만, noon, midnight 등의 추가적인 처리도 사실 더 필요할 것 같네요.