1. 문제 확인
codeup python 1173번 문제 30분전
수호는 30분 전으로 돌아가고 싶은 1人 이다.
공백을 기준으로 시간과 분이 주어진다.
그러면 이 시간을 기준으로 30분전의 시간을 출력하시오.
예)
12 35 =====> 12 5
12 0 ======> 11 30
11 5 ======> 10 35
입력
시와 분이 입력된다.
( 시의 범위 : 0~ 23)
(분의 범위 : 0~ 59)
출력
입력된 시간의 30분 전의 시간을 출력하시오.
2. 문제 분석
1. 시간(hour)과 분(minute)을 공백(space)를 기준으로 입력받는다.
=> 파이썬의 기본 입력 `input()`함수를 사용하여 입력받는다.
=> 수치 계산을 해야 하므로 입력받은 값을 int형으로 형변환한다.
=> 공백을 기준으로 두 값을 한번에 입력받아야 하므로 `map()`, `split()`함수를 함께 사용해서 입력받는다.
2. 입력된 시간(hour, minute)의 30분 전의 시간 구한다.
=> `remain`이라는 변수로 `minute - 30`의 값을 저장한다.
3. 시간과 분을 출력할 조건식을 세운다.
=> `remain`변수의 값이 0이상인 경우 시간을 그대로 출력한다.
=> `remain`변수의 값이 0미만인 경우 hour에 대한 내부 조건식을 세운다.
=> 만약 hour이 0인 경우 -1시간은 없기 때문에 시간을 23으로하고 분을 60+remain해서 출력한다.
=> 아니라면 시간을 hour - 1하고 분을 60+remain해서 출력한다.
3. 문제 구현
# 공백을 기준으로 시간과 분을 입력받는다.
hour, minute = map(int, input().split())
# 분에서 30을 빼고 양수인 경우 그대로
# 음수인 경우 시간에서 1을 빼고
# 초과한 값을 60에서 뺀 값을 분으로 한다.
remain = minute - 30
if remain >= 0:
print(hour, remain)
else:
# 만약 시간이 0이라면 23시가 돼야 하기 때문에 hour를 23으로 출력다.
if hour == 0:
print(23, 60+remain)
else:
print(hour-1, 60+remain)