
안녕하세요 :)
오늘은 백준 2884번 알람 시계 문제를 들고 왔습니다.
이번 문제는 조건과 반례를 생각해야하는 부분이 있어 생각할 시간이 필요한 문제였습니다. 제가 생각하지 못한 부분과 이번에 다시 정리한 파이썬 문법을 정리해보도록 하겠습니다.
먼저 문제 조건은 다음과 같습니다. 두 정수 h, m을 입력을 받고 h의 범위는 0<=h<=23, m의 범위는 0<=m<=59이어야 한다. 또한 입력하는 시간에서 45분을 뺀 시간을 출력하는 것입니다.
h와 m의 범위는 다음과 같이 검사했습니다.
if(0<=h<=23 and 0<=m<=59):
입력하는 시간에서 45분을 빼는 것은 2가지 경우의 수가 존재합니다. 첫번째는 입력한 m의 값이 45보다 큰 경우이고 다른 경우는 45보다 작은 경우이다.
(저는 참고로 45보다 큰 경우를 생각을 못해서 시간이 꽤 걸렸습니다 ....ㅎㅎ)
- m의 값이 45보다 큰 경우 : h의 값을 유지하면서 m의 값에서 45를 뺀다.
- m의 값이 45보다 작은 경우 : h의 값에서 1을 빼고 m의 값에서 45를 뺀다.
if(m < 45): hour = (h-1)%24 else: hour = h min = (m-45)%60
- % 포맷팅을 사용하는 경우
print("정수 포맷팅 : %d" %(num)) print("실수 포맷팅 : %f" %(flo)) print("문자열 포맷팅 : %s" %(str))
- format을 사용하는 경우 : format 안 인수들이 순서대로 0, 1, 2...이다.
print("int: {0}, float: {1}, string: {2}" .format(num, flo, string))
마지막으로 2884번 정답 코드입니다.
h, m = map(int, input().split())
if(0<=h<=23 and 0<=m<=59):
if(m < 45):
hour = (h-1)%24
else:
hour = h
min = (m-45)%60
print("%d %d" %(hour, min))
풀다가 틀렸는지 잘 모르겠으면 밑 반례들을 검사해보세요 !!

밑에 제가 도움을 받은 사이트 링크를 첨부하겠습니다 !!