h, m =map(int,input().split())
cooktime = int(input())
h += cooktime //60
m += cooktime %60
if m >= 60:
h += 1
m -= 60
if h >= 24:
h -= 24
print(h,m)
🤔 문제 풀이
- h, m =map(int,input().split())
- 백준에서 입력해주는 값을 int로 변환하고, 공백을 기준으로 매칭시켜줄 겁니다.
- cooktime = int(input())
- 조리 시간을 int형으로 받아줄게요
- h += cooktime //60
- 시간은 조리 시간에다가 60을 써서 몫을 구하고, 몫이 있을 시, 더해줄게요
- m += cooktime %60
- 분은 조리 시간에다가 60을 나눈 나머지를 더해줄게요
- 예) 61%60은 1이 나머지니까 m에 더해줄게요
- if m >= 60:
h += 1
m -= 60- 분이 60이거나 60을 넘어서면 h에 1시간을 더해줄게요
- 그러고 m에는 60을 빼준 값을 반환할게요
- if h >= 24:
h -= 24- h가 24보다 크거나 같을 때는 h에 -24를 해줄게요
- 0시가 필요하니까요
실패 흔적들
#1트 - TypeError
h, m =int(input().split())
cooktime = int(input())
if h >= 24:
h -= 24
elif m >= 60:
h += 1
m -= 60
elif m < 60:
m += cooktime
print(h,m)
🤔 문제 풀이
- 제가 생각하는 조건들만 우르르 적어보았어요
- 제가 문제 푸는 스타일이 문제를 읽으면서 떠오르는 코드들을 나열하거든요 ㅎㅎ;
- h, m =int(input().split())
- map 함수를 하지 않았더니 TypeError가 나더라구요
함수 | 설명 | 예시 |
map(function, iterable) |
|
# 두 리스트에서 같은 위치의 값들을 더하는 함수 def add(x, y): return x + y list1 = [1, 2, 3] list2 = [4, 5, 6] # 두 리스트에서 같은 위치의 값을 더하기 result = map(add, list1, list2) # 결과를 리스트로 변환하여 출력 print(list(result)) # [5, 7, 9] |
- 그래서 map 함수를 다시 보고, 2트로 넘어갔습니다.
- 왜 다시 보았냐면, "map 안 써도 되지 않나?" 라고 생각했거든요
#2트 "틀렸습니다"
h, m =map(int,input().split())
cooktime = int(input())
h += cooktime //60 # cooktime에다가 60을 나눴을 때 몫이 나온다면 그 몫을 더해주기
m += cooktime %60 # cooktime에다가 60을 나눴을 때 나머지를 다온다면 더해주기
if h >= 24:
h -= 24
elif m >= 60:
h += 1
m -= 60
elif m < 60:
m += cooktime
print(h,m)
🤔 문제 풀이
- h, m =map(int,input().split())
- h, m을 각각 int형으로 변환해주고, input 받을 겁니다!
- h += cooktime //60
- 이걸 왜 썼냐면요, cooktime이 60분으로 나누어주었을 때 몫이 생기면 시간에 +1을 해주기 위해서예요
- m += cooktime %60
- 반면에 분을 구할 때는 나머지(%)로 해주었습니다
- 예를 들어 61%60을 하면 나머지 1이 발생하죠? 그게 1분으로 남게끔요!
하지만 정답으로는 틀렸다고 뜨더라구요 🤔
뭐가 문제일지 멍- 때리면서 고민했어요 흐음
#3트 "틀렸습니다"
h, m =map(int,input().split())
cooktime = int(input())
h += cooktime //60
m += cooktime %60
if m >= 60:
h += 1
m -= 60
elif m < 60:
m +=cooktime
if h >= 24: # h는 따로 조건문을 줘야 하나? 라고 생각했음
h -= 24
print(h,m)
그래서 도달한 생각이 변수 h와 m를 각각 조건을 줘야 하나..? 했어요
하지만 틀렸죠 ( ͡° ͜ʖ ͡°)
근데 이렇게 따로 조건을 줘야할 거 같아서 그대로 유지했답니다
#4트 "정답"
h, m =map(int,input().split())
cooktime = int(input())
h += cooktime //60
m += cooktime %60
if m >= 60:
h += 1
m -= 60
# elif m < 60: # 이미 위에서 m에 대해 정의 내렸기 때문에 삭제해봄
# m +=cooktime
if h >= 24:
h -= 24
print(h,m)
대체 뭐가 문제인지,, 🤦🏻♀️
제가 만든 코드와 눈싸움을 해봤어요
생각해보니까 위에서 m에 대해 할당을 해놓고 밑에서 elif로 또 조건을 줬더라구요 그래서 삭제해보았더니
정답!!!! 드디어 정답!!!
저번에 알람 시계 문제도 그렇고
시간 계산하는 거를 정말 못하는 거 같아요
앞으로도 시간 관련 문제를 좀 더 접해봤으면 좋겠어요
'문제 풀기 > 백준' 카테고리의 다른 글
[조건문] 2480번 주사위 세 개(+실패 흔적들) (0) | 2024.12.18 |
---|---|
[조건문] 2884번 알람 시계 (+실패 흔적, 지독히 나를 괴롭힌 문제임2h) (2) | 2024.12.14 |
[조건문] 14681번 사분면 고르기 (0) | 2024.12.14 |
[조건문] 2753번 윤년 (+내가 못하는 배수, 실패 흔적) (0) | 2024.12.14 |
[조건문] 9498번 시험 성적 (+다른 사람 풀이) (0) | 2024.12.14 |