본문 바로가기
Python/코딩도장

코딩도장_파이썬 심사문제 39.7 (시간 이터레이터 만들기)

by 비전공자 기록광 2020. 8. 24.
반응형

표준 입력으로 정수 세 개가 입력됩니다(첫 번째 정수는 시작하는 초, 두 번째 정수는 반복을 끝낼 초, 세 번째 정수는 인덱스이며 입력되는 초의 범위는 0~100000, 입력되는 인덱스의 범위는 0~10입니다). 다음 소스 코드에서 시간 값을 생성하는 이터레이터를 만드세요.

  • 시간 값은 문자열이고 시:분:초 형식입니다. 만약 숫자가 한 자리일 경우 앞에 0을 붙입니다(예: 12:01:08).
  • 1초는 00:00:01입니다. 23:59:59를 넘길 경우 00:00:00부터 다시 시작해야 합니다.
  • 시간은 반복을 끝낼 초 직전까지만 출력해야 합니다(반복을 끝낼 초는 포함되지 않음).

문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
________________
________________
________________
________________
________________
________________
________________
________________
________________
________________
________________
________________
 
start, stop, index = map(int, input().split())
 
for i in TimeIterator(start, stop):
    print(i)
 
print('\n', TimeIterator(start, stop)[index], sep='')
cs

 

입력

0 3 2

결과

00:00:00
00:00:01
00:00:02

00:00:02

 

입력

88234 88237 1

결과

00:30:34
00:30:35
00:30:36

00:30:35


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class TimeIterator:
    def __init__(self,start,stop):
        self.start=start
        self.stop=stop
 
    def __getitem__(self,index):
        if index < self.stop-self.start:
            second=(self.start+index)
            second%=60
            minute=(self.start+index)//60
            minute%=60
            hour=(self.start+index)//60//60
            hour%=24
            return '{0:02d}:{1:02d}:{2:02d}'.format(hour,minute,second)
        
        else:
            raise IndexError
cs
반응형

댓글