• TOC {:toc}

이 글은 백준 온라인 저지의 2525번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.

일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.

2021.03.24

메모리 시간 코드 길이
28776 KB 72 ms 85 B
h, m = map(int, input().split())
t = int(input())
print((h + ((m + t) // 60)) % 24, (m + t) % 60)

아이디어 & 풀이

입력받은 분(m)에 경과한 시간(t)을 더해서

  • 60으로 나눈 몫은 시 값에 더해 출력하고
  • 나머지는 분으로 출력한다.

피드백

  • 시간 조건(0 ~ 23 사이)을 고려하지 않아서 처음에 틀렸다. 항상 문제의 ‘조건’을 챙기자.

참고 답안 1

h, m = map(int, input().split())
# input을 연산식 안에 넣는 것도 가능하다.
t = h * 60 + m + int(input())
print(t // 60 % 24, t % 60)

아이디어 & 풀이

주어신 시, 분을 전부 분으로 변환해 계산한다.

참고 답안 2

# * : unpacking, (a, b)를 a, b 각각 출력되게 해주는 역할인 것 같다.
# divmod(a, b) : a를 b로 나눈 몫과 나머지를 (quotient, remainder) 꼴로 반환
# a = (eval(input().replace(" ", '*60+')) + int(input())) % 1440
    # input().replace(" ", '*60+'): 첫 줄에 받은 값 (h m) 사이의 공백을 *60+로 대체해서 → h*60+m
    # + int(input()): 둘째 줄에 받은 값을 추가로 더해
    # eval()로 실행
# b = 60
print(*divmod((eval(input().replace(" ", "*60+")) + int(input())) % 1440, 60))

아이디어 & 풀이

나눠지는 수(분)를 한 줄로 계산하기위해 eval() 함수를 사용한다.

몫과 나머지를 divmod()를 이용해서 계산한다.