Koala - 18기/코딩테스트 기초 스터디

[백준/python] 12840 : 창용이의 시계

sean613 2025. 5. 17. 16:03

문제

 

https://www.acmicpc.net/problem/12840

 

문제

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

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

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

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

입력

현재 시간이 h m s 로 주어진다. (0 ≤ h ≤ 23, 0 ≤ m ≤ 59, 0 ≤ s ≤ 59)

그 다음 쿼리의 개수 q가 주어진다. (1 ≤ q ≤ 100,000)

다음 q개의 줄에는 쿼리가 주어진다. 쿼리의 형태는 위와 같다.

출력

쿼리의 T가 3 일때, 창용이가 이리 저리 바꿔 놓은 시계가 가리키는 시간을

h’ m’ s’ 의 형태로 출력한다. T가 3인 쿼리는 하나는 꼭 주어진다.


Algorithm

1. 시, 분, 초로 나뉘어있는 것을 전부 초로 환산해서 계산을 쉽게 한다.

2. T와 같이 입력받는 c는 입력을 안 받는 경우도 있기 때문에 list 형태로 입력받아 Value Error를 방지한다.

 


 

 

Code

import sys
input = sys.stdin.readline

h, m, s = map(int,input().split())
time = h*3600 + m*60 + s
q = int(input())

for i in range(q):
    lst = list(map(int,input().split()))
    T = lst [0]
    if T == 1:
        time += lst[1]
        time %= 86400
    elif T == 2:
        time -= lst[1]
        time %= 86400
    if T == 3:
        temp = time
        h = temp // 3600
        temp %= 3600
        m = temp // 60
        s = temp % 60

        print(h, m, s)