📝 문제
> 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/2525
2525번: 오븐 시계
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
www.acmicpc.net
🎨 풀이
💡 성공 코드 1
import sys
H,M = map(int, sys.stdin.readline().split())
plus_M = int(sys.stdin.readline())
M += plus_M
H += (M // 60)
M %= 60
H %= 24
print(H,M)
>
1. 입력을 받는다. (현재 시간(시,분), 더해줄 시간(분))
2. M에 plus_M을 더해준다. (분끼리 더해주기)
3. H에 (M 나누기 60)의 몫을 더해준다. (분을 시간으로 바꿔줌)
4. M에는 (M 나누기 60)의 나머지를 넣어준다. (M은 0~59까지의 숫자를 가지고 있기 때문)
5. H에는 (H 나누기 24)의 나머지를 넣어준다. (H는 0~23까지의 숫자를 가지고 있기 때문)
💡 성공 코드 2
import sys
hour, min = map(int, sys.stdin.readline().split())
new_min = int(sys.stdin.readline())
min = min + new_min
while min >= 60 :
min = min-60
hour += 1
if hour == 24 :
hour = 0
print(hour, min)
> 이 코드는 큰 틀 자체는 위의 코드와 유사하지만, while문과 if문을 쓴 부분이 좀 다르다.
여기서는 min이 60을 넘는다면 min이 60을 넘지 않을 때까지 min에서 60을 빼주고, 그 즉시 hour은 1을 증가시키고, 그 와중에 만약 hour이 24가 되었다면 0으로 바꿔주는 그런 코드다.
while문과 if문의 콜라보로 인해 위의 코드와는 시간이 28ms 차이가 났다. 물론 이 코드가 더 느린 쪽이다.

끝~
⭐ 느낀점
> 3개월 전의 코드가 성공 코드 2고, 오늘 풀어본 게 성공 코드 1이다. 같은 문제를 두고도 다르게 코드를 적을 수 있다는 것이 참 신기한 것 같다. 그것도 다른 사람도 아니고 내가 두 번 푼건데! ㅋㅋㅋ 시간도 줄어들었다. 따봉이다. 어제 백준 끝내고 느낀점에 뭐랬더라.. 뭐 맨날 잘 풀리면 좋겠다 했었나.. 이런 날만 있으면 좋겠다 했었나.. 놀랍게도 하루만에 그 마음이.. 사그라들었다. 이유는 ㅠㅠ 지금 진행하고 있는 프로젝트가 잘 안풀리고 있기 때문이다. 모듈 차이인지 뭔지.. 이유도 모르겠다. 그래서 약간 여기로 도피하듯이 왔는데,, 이걸 끝내고 나면 다시 돌아가야겠지... 피곤하다 자고싶다. 딱 3시까지만 집중하다가 자자~ 파이팅이당
'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 10950번 - A+B - 3 (파이썬) (0) | 2022.05.20 |
---|---|
[백준] 2739번 - 구구단 (파이썬) (0) | 2022.05.19 |
[백준] 2884번 - 알람 시계 (파이썬) (0) | 2022.05.17 |
[백준] 2480번 - 주사위 세개 (파이썬) (0) | 2022.05.16 |
[백준] 14681번 - 사분면 고르기 (파이썬) (0) | 2022.05.15 |