백준 17091 단어시계

처음으로 해본 무작위 문제.
처음 눌렀을때는 영어문제만 나와서 당황....
내 수준에 맞는 것 같아서 풀게 되었다.

오랜만에 리스트 함수 복습 좀 하게 된 문제 였던 것 같다.

문제 링크: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)

좋은 웹페이지 즐겨찾기