정해진 시간보다 45분 일찍 알람을 맞추는 문제이다.
푸는 방법을 구상해보자면
1. 입력받은 분에서 45만큼 빼고, 음수값이 되면 (분 + 60), (시 - 1) 을 해주면서 시가 음수가 되면 +24를 해준다,
2. total 분으로 바꿔서 45만큼 빼주고 시, 분으로 나누어 준다.
의 루트가 있을 수 있겠다.
H, M = map(int, input().split())
before = 45
M -= before
if M < 0:
M += 60
H -= 1
"""if H < 0:
H += 24"""
if H < 0:
H += 24
print(H, M)
💡 if H < 0이 if M < 0의 밖에 있는것과 안에 있는 것이 어떻게 다른가? 후자가 더 효율적이지 않을까?
우선 둘다 입력해보면 전자가 메모리 사용이 더 적다. (백준 입력)
후자의 코드는 메모리가 두 조건을 전체 블록 구조로 저장, 즉 중첩된 스코프를 관리해야 한다.반면 전자는 조건문 두개가 서로 독립이기에 스코프 추적을 덜 하게 된다.
여기서 스코프 추적이란 '지금 어떤 변수가 어디에 속해있는지'를 관리하고 따라다니는 것이다.스코프는 변수의 유효범위이다.
따라서 두번째 조건이 '첫번째 조건 = T'일때 의미있는 경우에 중첩if를 사용하는 것이 낫다.
-> 독립적 조건의 경우는 굳이 중첩if가 아닌 그냥 독립적으로 적는게 낫다