알고리즘/SWEA

[Python] SWEA D2 1976번 - 시각 덧셈

번잔중 2022. 8. 21. 19:30
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

T = int(input())
for t in range(1, T + 1):
    h1, m1, h2, m2 = map(int, input().split())
    h = (h1 + h2) * 3600
    m = (m1 + m2) * 60
    ans = h + m
    if ans//3600 >= 12:
        ans -= 12 * 3600
    print('#%d %d %d' % (t, ans//3600, (ans%3600)//60))

- 입력받은 시간을 1시간 = 3600, 1분 = 60 같은 초 형태로 변환 후 더해줍니다.

- 그 후 시간과 분 단위로 다시 나타내기 위해 3600으로 나눠줍니다.

- 이 때, 시간이 12 이상인 경우 12 * 3600초를 빼주어 1~12 이내의 범위로 표현합니다.

- 그 후 시간과 분 단위로 나누어서 출력합니다.

 

그런데 문제를 풀고 나서 다른 분들의 코드를 보니 필요 없는 부분이 있었습니다. 그래서 수정한 코드!!

T = int(input())
for t in range(1, T+1) :
    h1, m1, h2, m2 = map(int, input().split())
    m = m1 + m2
    h = h1 + h2 + m // 60
    m = m % 60
    if h > 12 :
        h = (h - 12)
    print('#%d %d %d' % (t, h, m))

- 입력된 시간 h1, h2와 m1과 m2의 합인 m을 나눈 몫이 시간입니다.

- m1과 m2의 합인 m을 나눈 나머지가 분입니다.

 

이전 코드보다 훨씬 간결해졌습니다. ^_^

 

피드백은 언제나 환영합니다.