| 백준 2884번

Yoonsik·2022년 5월 21일
0

BAEKJOON

목록 보기
1/2
post-thumbnail

2884번 문제링크

💻 풀이

이 문제에서 중요하게 생각해야할 조건 2 가지를 정해 보았다.
먼저, 상근이가 일어나야 하는 시간을 H시 M분으로 하였을때
(0 <= H <= 24, 0 <= M <= 59)

  • Condition 1
    - M이 45분보다 작은 경우
  • Condition 2
    - H가 0이고, M이 45분보다 작은 경우

Conditon 1 일때, H는 1만큼 빼 주고, M은 60 - (45 - M)이라는 식으로 일반화 해주었다. 더 간단하게는 60 - (45 - M) = 15 + M 으로 표현할 수 있다.

if (M < 45):
	print(H - 1, M + 15)

Conditon 2 일때, H는 0시(새벽 12시) 이전인 23시로 바꿔주고, M은 Condtion 1과 똑같이 M + 15로 만들어주었다.

if (H == 0 and M < 45):
	print(23, M + 15)

Condition 1과 2 그리고 가장 일반적인 조건인 M이 45보다 큰 경우 모두 나열해 보면 다음과 같은 코드를 짤 수 있다.


H, M = map(int, input().split( ))

if (M >= 45):
  print(H, M - 45)

elif (M < 45):
  print(H - 1, M + 15) 	# M = 60 - (45 - M) = 15 + M

elif (H == 0 and M < 45):
  print(23, M + 15)

다음 코드를 실행해 보면 한 가지 문제가 생긴다. 바로, H가 0인 경우 Condition 2 조건이 실행되지 않고, Condition 1조건으로 넘어가 버리는 것이다. 즉, H가 23이 아닌, -1 M+15 로 출력되어버린다.

이를 해결하기 위해 Condition 1의 조건에 H!=0조건을 하나 더 추가해 주었다.

<수정된 조건>

  • Condtion 1
    - H가 0이 아니고, M이 45 보다 작은 경우
  • Conditon 2
    - H가 0이고, M이 45보다 작은 경우

최종 수정한 코드는 아래와 같다

📑 Code

H, M = map(int, input().split( ))

if (M >= 45):
  print(H, M - 45)

elif (H !=0 and M < 45):
  print(H - 1, M + 15) 	# M = 60 - (45 - M) = 15 + M

elif (H == 0 and M < 45):
  print(23, M + 15)
profile
꾸준함의 힘

0개의 댓글