처음으로 해본 무작위 문제.
처음 눌렀을때는 영어문제만 나와서 당황....
내 수준에 맞는 것 같아서 풀게 되었다.
오랜만에 리스트 함수 복습 좀 하게 된 문제 였던 것 같다.
문제 링크:https://www.acmicpc.net/problem/17091
시도했던 흔적들...
이번에 런타임 에러가 걸린 이유는 이번에 문제 풀때, 리스트를 생성해서 풀었는데, 리스트의 범위가 초과되는 문제가 발생하였기 때문이다.
그리고 위에 계속해서 또 틀렸던 이유는 elif문을 써서 위의 if문에 종속 되는 느낌으로 문제를 풀었어야 했는데, 그렇게 하지 않아서 출력이 두번 나오게 된 경우였다.
코드를 공개 하자면
import sys
h = int(sys.stdin.readline())
m = int(sys.stdin.readline())
h_list = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'one'] #시간 부분 리스트,뒤에 one을 한번 더 추가해서 배열의 초과를 막았다.
m_list = ['o\' clock', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'quarter', 'sixteen', 'seventeen',
'eighteen', 'nineteen', 'twenty', 'twenty one', 'twenty two', 'twenty three', 'twenty four', 'twenty five', 'twenty six', 'twenty seven', 'twenty eight', 'twenty nine', 'half']#분 부분 리스트
def define(minute, hour, to_or_past, plus_zero): #어떻게 출력할지 판별해주는 함수 plus_zero 변수는 to를 쓸 경우에는 현재의 시간보다 1시간뒤의 시간이 출력 되어야 해서 밑에 보면 if절로 경우를 나누었다.
if minute == 1: #1분 일때는 minute 단수형 출력
print('%s minute %s %s' %
(m_list[minute], to_or_past, h_list[hour+plus_zero]))
elif minute == 30 or minute == 15:
print('%s %s %s' %
(m_list[minute], to_or_past, h_list[hour+plus_zero]))
else:
print('%s minutes %s %s' %
(m_list[minute], to_or_past, h_list[hour+plus_zero]))
if m == 0:
print('%s %s' % (h_list[h], m_list[m]))
elif 1 <= m and m <= 30:
define(m, h, 'past', 0)
else:
m = 60 - m
define(m, h, 'to', 1)