[문제 링크] 👉
설명
시 분으로 이루어진 시각을 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분을 넘겼을 때 시도 같이 플러스를 해줘야 하는 거부터 너무 깊게 들어가버렸다. 제약사항 잘 확인하자.
'SWEA' 카테고리의 다른 글
[SWEA] 1959. 두 개의 숫자열 (Python/D2) (1) | 2024.10.18 |
---|---|
[SWEA] 1961. 숫자 배열 회전 (Python/D2) (1) | 2024.10.18 |
[SWEA] 1284. 수도 요금 경쟁 (Python/D2) (4) | 2024.10.16 |
[SWEA] 1945. 소인수분해 (Python/D2) (0) | 2024.10.16 |
[SWEA] 21425. += (Python/D2) (0) | 2024.10.16 |