📝 문제
> 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/2884
🎨 풀이
💡 성공 코드
import sys
H,M = map(int, sys.stdin.readline().split())
if (M < 45):
if (H == 0):
H = 24
H -= 1
M = M + 60 - 45
else : # (M이 45보다 같거나 큰 경우)
M = M - 45
print(H,M)
> 이 문제도 범위를 잘 나눠서 계산해주면 되는 문제다.
1. M이 45보다 작은 경우
1-2. H가 0일 때 ( = H도 0이고 M도 45보다 작은 경우)
- H를 24로 바꾼다.
1-3. H에서 1을 빼주고, M에는 +60 - 45를 한다.
2. M이 45와 같거나 45보다 큰 경우
- M에서 45를 빼준다.
3. 그대로 print 한다.
💡 실패 코드
import sys
H,M = map(int, sys.stdin.readline().split())
if (H == 0):
H = 24
if (M < 45):
H -= 1
M = M + 60 - 45
else : # (M이 45보다 같거나 큰 경우)
M = M - 45
print(H,M)
> 맨 처음에 썼던 코드다.
- H를 먼저 24로 바꿔준 후 계산을 하도록 하는 코드인데, 이 코드를 작성하면서 한 가지 경우를 생각하지 못한게 실패로 이어졌다.
- H가 0이고, M이 45보다 큰 경우에는 이 코드가 내 의도와는 다르게 동작했다.
- 예를 들면, H가 0이고 M이 57일 때 이 코드를 실행시키면 24 12가 나온다.
- 그래서 실패한 거였다. ㅎㅎ. 그래서 M이 45보다 작을 때만 H == 0 조건문을 돌도록 안에 넣어주었더니 위의 성공 코드와 같이 성공했다.
끝~
⭐ 느낀점
> 왜 틀리는 건지 이해가 좀 안되고 있었는데, 그래도 해결법을 찾아서 기분이 좋다. 코드 계속 보고있었는데, 갑자기 딱 생각이 나더라.ㅎㅎ 틀린 걸 발견했을 때 기분이 너무너무 좋았다. 이런 날만 계속 있으면 얼마나 좋을까?
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 2739번 - 구구단 (파이썬) (0) | 2022.05.19 |
---|---|
[백준] 2525번 - 오븐 시계 (파이썬) (0) | 2022.05.18 |
[백준] 2480번 - 주사위 세개 (파이썬) (0) | 2022.05.16 |
[백준] 14681번 - 사분면 고르기 (파이썬) (0) | 2022.05.15 |
[알고리즘] 백준 - 11653 소인수분해 (1) | 2022.01.17 |