요즘 공채가 많이 올라온 덕분에 코딩테스트🎫를 거의 매주 보고 있는 것 같다.
프로그래머스, 해커랭크 등 다양한 곳에서 시험을 보고 있는데, 오늘은 해커랭크에서 재밌는 문제를 발견했다.
사실 재밌다기 보다는 모듈을 생각하지 않고.. 풀었다가 고생한 문제다..😂
(문제는 아래 달아놓았습니다!)
문제를 요약하자면, 다음과 같이 표준시간대가 다른 시각들이 주어지고, 그 차이를 "초(seconds)" 단위로 구하면 되는 문제였다.
Sat 02 May 2015 19:54:36 +0530
Fri 01 May 2015 13:54:36 -0000
먼저, 이 문제를 접했을 때 둘 중 하나의 시간대를 기준으로 잡고 차이를 구하면 되겠다고 생각했다. 그러나 생각보다 연도, 월, 일을 처리하는 과정이 복잡했다. (특히, 윤년이 끼면 어떻게 처리해야하나.. 고민하다가 포기했다)
찾아보니, datetime 모듈을 통해 너무나 편리하게 풀 수 있었다..!
먼저 datetime.strptime을 통해 문자열로 주어진 날짜와 시간을 읽고 datetime.datetime 클래스 객체를 만든다.
time_format = '%a %d %b %Y %H:%M:%S %z'
t1 = datetime.strptime(t1, time_format)
t2 = datetime.strptime(t2, time_format)
이후, 두 시각의 차이를 "초(seconds)" 단위로 구하기 위해선 total_seconds() 를 사용하면 끝이었다.
return str(int(abs((t1-t2).total_seconds())))
참고자료
1) Hackerrank Datetime 문제 : Date and Time
2) 파이썬 위키 : 파이썬 Datetime