[Python] 코딩 도장 - 기계의 마라톤 기록

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 기계의 마라톤 기록] - Lv.1

항상 일정한 속도로 달리는 기계가 있다고 합시다.

이 기계의 100m 달리기 기록을 입력받으면 마라톤에서의 기록을 구하시면 됩니다.

마라톤 경기에서 달리는 거리는 42.195km입니다.

100m 달리기와 마라톤의 코스는 모두 직선이라고 합니다(회전 시 걸리는 시간을 고려하지 않습니다).

기계의 파손 및 배터리 방전 시간도 고려하지 않습니다.

출처: https://codingdojang.com/scode/702?answer_mode=hide


[풀이]

import datetime as dt

n = float(input("100m 달리기 기록을 초 단위로 입력하세요: "))

sec = (42195 / 100) * n
print(dt.timedelta(seconds=sec))
100m 달리기 기록을 초 단위로 입력하세요: 10.3
1:12:26.085000

시간을 구하는 것은 어렵지 않은데 기록을 출력하는 포맷이 중요한 듯 하다.

datetime 패키지의 timedelta()로 초를 입력해 포맷을 시간 단위로 선택하였다.


[추천 풀이]

record = float(input('enter your record: '))
time = record * 42195 / 100
marathon_record = []
marathon_record.append(int(time) // 3600)
marathon_record.append((int(time) - marathon_record[0] * 3600) // 60)
marathon_record.append((int(time) - marathon_record[0] * 3600 - marathon_record[1] * 60))
marathon_record.append(int(round(time - int(time), 2) * 100))
print('The marathon record is: {}h {}m {}s {:0<}'.format(marathon_record[0], marathon_record[1], marathon_record[2], marathon_record[3]))
enter your record: 10.3
The marathon record is: 1h 12m 26s 9

출력 포맷을 패키지 없이 직접 지정하였다.

Leave a comment