반응형
문제 링크 : https://www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
문제 요약
입력 시간보다 45분 빠른 시간을 출력하는 문제이다.
첫 줄에 두 정수 H와 M이 주어진다. 이때 H는 시간 M은 분을 나타내며 입력 시간은 24시간 표현을 사용한다.
TRY CODE
H, M = input().split()
h = int(H)
m = int(M)
if m - 45 <= 0:
h -= 1
m = 60+(m-45)
if h <= 0:
h += 24
print(h, m)
else:
print(H, M)
문제점
- 인풋 값을 str형으로 받아서 int형으로 변환시키는 게 효율적이지 못한 것 같았다.
- h의 값이 0이 될 경우 24시로 표현되어 24시 M분이 출력이 되었다.
- else를 통해서 아무런 제약이 없을시 바로 출력되는 print문을 만들었는데 M에 45분을 빼주는 코드를 까먹었다.
해결법
- 입력받은 값을 map함수를 통해 int형으로 변형시켜주었다.
- if 문의 H값의 범위를 수정해주었다.
- else문에 M -= 45 코드를 추가하여주었다.
CODE
H, M = map(int,input().split())
if M - 45 < 0:
H -= 1
M = 60+(M-45)
if H < 0:
H += 24
print(H, M)
else:
M -= 45
print(H, M)
풀이
1. H, M을 int값으로 입력 받아준다.
H, M = map(int,input().split())
2. 만약 M에 45를 빼서 0보다 작을 경우 if문을 동작시켜준다.
- H의 값에 -1을 한 후 H에 대입
- 60에 (M - 45)를 더해준 뒤 M에 대입
- 만약 H의 값이 0보다 작아질 경우 2중 if문을 동작시켜준다.
- H의 값에 24를 더한 후 H 값에 대입
- H, M의 값 출력
if M - 45 < 0:
H -= 1
M = 60+(M-45)
if H < 0:
H += 24
print(H, M)
3. M의 값에 -45를 한 후 M에 대입 후 H, M을 출력하여준다.
else:
M -= 45
print(H, M)
반응형
'Python > 알고리즘 - 백준' 카테고리의 다른 글
[백준] 2920 : 음계 (파이썬) (0) | 2022.10.08 |
---|---|
[백준] 2753 : 윤년 (파이썬) (0) | 2022.10.07 |
[백준] 2675 : 문자열 반복 (파이썬) (0) | 2022.10.06 |
[백준] 2577 : 숫자의 갯수 (파이썬) (2) | 2022.10.06 |
[백준] 2562 : 최댓값 (파이썬) (0) | 2022.10.06 |