본문 바로가기
IT/알고리즘

[알고리즘/파이썬] 백준 2884번 알람 시계, 2525번 오븐 시계 (사칙연산, 조건문)

by Ko2 2023. 5. 9.

백준 사이트의 단계별로 풀어보기 (단계별로 풀어보기 (acmicpc.net)) 두번째인 조건문 단계의 문제들입니다.

시간은 0시~23시, 0분~59분 이라는 범위가 존재하여 if 문을 사용해 계산할 수 있습니다.

알고리즘을 풀면서 조건문을 사용할 때 가장 중요한 부분은 발생 가능한 모든 케이스를 다뤄야 한다는 점입니다.

어려운 알고리즘 문제를 풀다보면 내가 생각하지 못한 케이스를 빠트려서 해당 예외 케이스들에서 오답이 나오는 경우가 많습니다.

if 문 작성시에는 항상 차근차근 발생 가능한 모든 케이스를 생각하며 작성하는 습관이 필요합니다.

2884번: 알람 시계 (acmicpc.net)

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

 

2525번: 오븐 시계 (acmicpc.net)

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

반응형

2884번 알람 시계

if 조건문만을 사용해 풀 수 있습니다.

조건 문의 경우 if / elif / else 형태로 작성할 수 있고, 타 언어와 다르게 조건문을 괄호로 감싸지 않아도 됩니다.

또한 and, or 조건은 특수문자가 아닌 and, or 로 작성해주면 됩니다.

h, m = map(int, input().split())

if h == 0 and m - 45 < 0: # 0시 (0~44)분
    h = 23
    m = 60 + (m - 45)
elif m - 45 < 0: # (1~23)시 (0~44)분
    h = h - 1
    m = 60 + (m - 45)
else: # (0~23)시 (45~59)분
    m = m - 45
    
print(h, m)

2525번 오븐 시계

이 문제도 위와 같이 if 문을 사용해서 풀 수도 있겠지만, 아래처럼 사칙연산 만으로도 해결 가능합니다.

a, b = map(int, input().split())
c = int(input())

# 종료 시
h = (a + (b + c)//60)%24
# 종료 분
m = (b + c)%60

print(h, m)

 

반응형

댓글