프로그래밍/백준

[백준알고리즘] 백준 12840 파이썬 - 창용이의 시계

매 석 2022. 10. 8. 16:28
반응형

문제

창용이는 여름을 맞이하여 ‘정창용’ 이름이 쓰인 한정판 섬머 에디션 시계를 구입했다. 왠지 오늘은 001도 가고 싶지 않고 시계를 가지고 놀고만 싶다. 우린 방에 있는 창용이가 시계를 가지고 뭘 하는지 궁금하기만 하다. 창용이는 시계의 건전지를 분리했기 때문에 시계는 시간이 흐르지 않는다.

창용이는 앞으로 시계를 돌리기도 하고 뒤로 시계를 돌리기도 한다. 입력으로는 초기 현재 시간이 주어지고 q개의 쿼리가 주어진다.

한 쿼리는 T로 시작한다. (1 ≤ T ≤ 3, 0 ≤ c ≤ 10,000,000)

  • T가 1일 때는 c를 입력으로 받아와서, 시계를 앞으로 c초 돌린다.
  • T가 2일 때는 c를 입력으로 받아와서, 시계를 뒤로 c초 돌린다.
  • T가 3일 때는 창용이가 조작한 시계의 상황을 출력한다.

문제풀이

#1.모듈 사용
from datetime import datetime, timedelta
import sys

input = sys.stdin.readline
h,m,s = list(map(int,input().split()))
t=datetime(2000,1,1,h,m,s)
for _ in range(int(input())):
    arr=list(map(int,input().split()))
    if arr[0]==1:
        t+=timedelta(seconds=arr[1])
    elif arr[0]==2:
        t-=timedelta(seconds=arr[1])
    else:
        print(t.hour,t.minute,t.second)

#2.모듈 사용x
import sys
h,m,s = map(int,input().split())
q =int(input())
for i in range(q):
    try:
        T,c = map(int,sys.stdin.readline().split())
        if(T==1):
            s += c%60
            c = c//60
            if(s>=60):
                m +=1
                s -=60
            m += c%60
            c = c//60
            if(m>=60):
                h+=1
                m -=60
            h += c%24
            if(h>=24):
                h -=24
        elif(T==2):
            s -= c%60
            c= c//60
            if(s<0):
                m -=1
                s +=60
            m -= c%60
            c = c//60
            if(m<0):
                h -=1
                m +=60
            h -= c%24
            if(h<0):
                h +=24
    except:
        print(h ,m ,s)

- 모듈 사용 버전과 모듈 비사용 버전으로 총 2가지 풀이법이다.