[Python] 코딩 도장 - 남은퇴근시간 계산기

Updated:

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

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

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


[문제: 남은퇴근시간 계산기] - Lv.1

현우는 성인이되어 회사에입사했다.

하지만 들어간기업이 하필 할일없는 중소기업이라

퇴근시간까지 놀다가 퇴근시간에 퇴근하는것이 일상화가되어버렸다..

현우는 심심한지라 좀더효율적으로놀기위해

현재부터 퇴근시간까지 남은시간을 알려주는 계산기를 만들어

계산적으로놀고싶었다 우리가현우를 도와주자!!

(참고로 현우의퇴근시간은 17시30분이다)

input: 현재시간

output: 남은시간 : hh:mm:ss

or

남은시간 : s

심화버젼 : 이쁘게꾸며보자!

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


[풀이]

current_time = "17:15:24"
out_time = "17:30:00"

current_s = list(map(int, current_time.split(":")))
current_s = current_s[0]*60*60 + current_s[1]*60 + current_s[2]

out_s = list(map(int, out_time.split(":")))
out_s = out_s[0]*60*60 + out_s[1]*60 + out_s[2]

ans = out_s - current_s

t = str(ans // (60*60)).zfill(2)
h = str((ans % (60*60)) // 60).zfill(2)
s = str((ans % (60*60)) % 60).zfill(2)

print(f"남은 시간: {t}:{h}:{s}")
남은 시간: 00:14:36

패키지 없이 코드를 작성해보았는데 너무 번잡하게 만든 것 같다.

입력된 시간을 초 단위로 바꿔 남은 시간을 초로 계산한 뒤 다시 시:분:초 형태로 만들어주었다.


[추천 풀이]

import datetime as dt

cur_time = dt.datetime.today()  # 현재시간
leave_time = cur_time.replace(hour=17, minute=30, second=0)  # 퇴근시간

# 남은 시간 계산 (퇴근 시간이 지난 경우 익일 퇴근까지의 시간)
diffsec = (leave_time - cur_time).total_seconds()
diffsec = diffsec + 60 * 60 * 24 if diffsec < 0 else diffsec

print(f"다음 퇴근시간까지는 {dt.timedelta(seconds=diffsec)}({diffsec:,.0f}초) 남았습니다.")
다음 퇴근시간까지는 0:43:20(2,600초) 남았습니다.

이 분은 datetime 패키지를 이용해서 푸셨는데 아마 문제 의도도 날짜 패키지를 사용하는 게 아닐까?

Leave a comment