본문 바로가기
Algorithm/HackerRank

[HackerRank]Time Conversion(풀이 성공)

by 전봇대파괴자 2021. 2. 9.

문제

 

12시 단위+AM/PM으로 표시된 시간이 입력된다. AM/PM을 제거하고, 입력된 시간을 24시 단위로 바꾸어 출력하라. 

 

Sample Input :

07:05:45PM

Sample Output :

19:05:45

 

내 코드:

import os
import sys


def timeConversion(s):
    am_pm = s[-2:] 
    time = s[:2] # '시' 부분만 슬라이싱
    changed_time = int(time)+12
    pix = s[2:-2] # 변동되지 않는 '분' 부분 슬라이싱
    
    if am_pm=='AM' and time=='12' : # 자정~새벽 1시까지 
       return '00'+pix
    
    elif am_pm=='PM' and time=='12' : # 정오~오후 1시까지
        return s[:-2]

    else:
        if am_pm == 'AM': 
            return s[:-2]
        else:
            return str(changed_time)+pix
         
    
if __name__ == '__main__':
    f = open(os.environ['OUTPUT_PATH'], 'w')

    s = input()

    result = timeConversion(s)

    f.write(result + '\n')

    f.close()

 

Comment: 규칙 외 예외 시간대(자정~새벽 1시, 정오~오후 1시)를 어떻게 분리하느냐가 핵심인 문제입니다.

 

1. 자정 시간대의 경우 다른 오전 시간대처럼 시가 그대로 나오는 것이 아니라 '00'이 들어가야 합니다.

2. 또한 정오부터 오후 1시까지의 시간대는 다른 오후 시간대처럼 시에 +12가 되는 것이 아니라, 오전 시간대처럼 시간이 그대로 출력되어야 합니다. 

 

이 두 가지 예외만 잘 고려한다면 나머지는 쉽게 풀립니다.