본문 바로가기
python

CodeUp Python 1173 30분전

by Devinus 2021. 7. 26.

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분 전의 시간을 출력하시오.

[사진 1] - codeup 1173 입출력 예시


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)