문자열 s가 주어졌다고 가정해 봅시다. 이 문자열은 오전(am) 또는 오후(pm) 접미사가 붙은 12시간제 시간을 나타내며, 우리는 이를 24시간제 표기법으로 변환해야 합니다.
예를 들어 입력이 "08:40pm"이라면 출력은 "20:40"이 되어야 합니다.
문제 해결 접근 방식
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- hour: 문자열 s의 인덱스 0~2 구간(시 부분)을 정수로 변환한 뒤 12로 나눈 나머지를 저장합니다.
- minutes: 문자열 s의 인덱스 3~5 구간(분 부분)을 정수로 변환하여 저장합니다.
- 만약 s[5]가 'p'라면(오후인 경우), hour에 12를 더합니다.
- 최종 결과를 "hour:minutes" 형식으로 반환합니다.
여기서 시(hour)를 12로 나눈 나머지를 사용하는 이유는 자정(12:00am)과 정오(12:00pm)를 올바르게 처리하기 위함입니다. 12 % 12 = 0이므로 자정은 00시가 되고, 오후의 경우 여기에 12를 더하면 정오는 12시로 정확히 변환됩니다.
구현 예제
아래 코드를 통해 더 자세히 이해해 보겠습니다.
class Solution:
def solve(self, s):
hour = int(s[:2]) % 12
minutes = int(s[3:5])
if s[5] == 'p':
hour += 12
return "{:02}:{:02}".format(hour, minutes)
ob = Solution()
print(ob.solve("08:40pm"))
입력
"08:40pm"
출력
20:40
코드에서 사용된 {:02} 포맷 지정자는 숫자를 두 자리로 맞춰주는 역할을 합니다. 덕분에 한 자리 숫자 앞에 자동으로 0이 채워져 "08:05"처럼 일관된 시간 형식을 유지할 수 있습니다.