[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