Stay Hungry Stay Foolish

SWEA

[SWEA] 1976. 시각 덧셈 (Python/D2)

dev스카이 2024. 10. 16. 23:57

[문제 링크] 👉 

 

SW Expert Academy

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

swexpertacademy.com

 


설명

시 분으로 이루어진 시각을 2개 입력 받아, 더한 값을 시 분으로 출력하는 프로그램을 작성하라.

(시각은 12시간제로 표시한다. 즉, 시가 가질 수 있는 값은 1시부터 12시이다.)

 

[제약 사항]
시는 1 이상 12 이하의 정수이다. 분은 0 이상 59 이하의 정수이다.

 

풀이

핵심은 12시간제로 표시하는 것이다. 주의할 점은 분이 60분을 넘기면 시도 같이 증가를 해줘야 한다. 

 

첫 번째 시각의 시, 두 번째 시각의 시를 더하고 hour에 저장한다.

첫 번째 시각의 분, 두 번째 시각의 분을 더하고 minute에 저장한다.

 

minute이 60 이상이면 hour에 1을 더해주고, minute에서 60을 빼준 값을 다시 저장한다.

hour는 12 를 넘어가면 hour에서 12를 빼준 값을 다시 저장한다.

 

Solution

sol.1

test_case = int(input())

for tc in range(1, test_case + 1):
    hour1, minute1, hour2, minute2 = map(int, input().split())
    hour = hour1 + hour2
    minute = minute1 + minute2
    if minute > 59:
        hour += 1
        minute -= 60
    if hour > 12:
        hour -= 12
    print("#%d %d %d" %(tc, hour, minute))

 

 

sol.2

이 코드는 만일 제약사항이 없을 때 활용할 수 있다.

test_case = int(input())

def hour_calc(hour):
    if hour > 12:
        hour -= 12
        hour_calc(hour)

    return hour

def minute_calc(hour, minute):
    if minute > 60:
        minute -= 60
        hour += 1
        hour = hour_calc(hour)
        minute_calc(hour, minute)

    return hour, minute

for tc in range(1, test_case + 1):
    hour1, minute1, hour2, minute2 = map(int, input().split())
    hour = hour1 + hour2
    minute = minute1 + minute2
    while hour > 12:
        hour -= 12
    hour, minute = minute_calc(hour, minute)

    print("#%d %d %d" %(tc, hour, minute))

 

👩‍💻 회고

사실 sol.2 코드는 제약사항을 제대로 이해하지 못하고 풀어서 나온 코드이다... 입력이 제한적이라 시를 2이상 플러스 해줘야 할 일이 없기 때문에 필요없는 것이다. 60분을 넘겼을 때 시도 같이 플러스를 해줘야 하는 거부터 너무 깊게 들어가버렸다. 제약사항 잘 확인하자.