<aside> 💬 lv0, 정렬

위니브 회의 시간표 정렬

문제 설명

위니브 A 회의실에는 회의 시간 목록이 AM/PM 형식으로 표현되어 있습니다. 이 시간들을 24시간제로 변환한 뒤, 오름차순으로 정렬하는 코드를 작성해주세요. 시간은 'HH:MM AM' 또는 'HH:MM PM' 형식으로 주어지며, 12시간제를 24시간제로 변환할 때 '12:00 AM'은 '00:00', '12:00 PM'은 '12:00'으로 변환합니다.


제한 사항


입출력 예

입력 출력
['01:00 PM', '11:30 AM', '12:45 PM', '09:00 AM', '12:00 AM'] ['12:00 AM', '09:00 AM', '11:30 AM', '12:45 PM', '01:00 PM']

입출력 설명

주어진 시간을 24시간제로 변환하고 오름차순으로 정렬합니다. 예를 들어, '01:00 PM'은 24시간제로 '13:00'이 되고, '12:00 AM'은 '00:00'이 됩니다. 이러한 변환을 거쳐 정렬된 결과는 ['12:00 AM', '09:00 AM', '11:30 AM', '12:45 PM', '01:00 PM']가 됩니다.

</aside>

😺 풀이 1. 문자열 메서드

def solution(times): **#1 함수 정의**
    def convert_time(time): **#2 함수 정의**
        **#3 문자열 분할**
        hh, mm, ampm = time.split(" ")[0].split(":") + time.split(" ")[1:]
        
				**#4 24시간제 변환**
        if ampm == "PM" and hh != "12":
            hh = str(int(hh) + 12)
        elif ampm == "AM" and hh == "12":
            hh = "00"

        return hh + ":" + mm + " " + ampm **#5 문자열 형식 변환**
        
    return sorted(times, key=convert_time) **#6 결과 반환**

단계별 풀이 전략

  1. 함수 정의

    코드의 첫 부분에서 solution이라는 함수를 정의합니다. 이 함수는 하나의 인자 times를 받습니다. timesHH/MM/AM 혹은 HH/MM/PM 형식의 리스트입니다. convert_time 함수를 key 값으로 정렬한 뒤 반환하고 있습니다.

  2. 함수 정의

    times의 각 원소인 time을 인자로 받습니다.

  3. 문자열 분할

    주어진 시간 문자열을 split 메서드로 공백(” “)과 콜론(”:”)을 기준으로 시간(hh), 분(mm), 오전/오후(ampm)로 나눕니다.

  4. 24시간제 변환

    PM이면서 12시가 아닌 경우, 12를 더합니다. AM이면서 12시인 경우, 00으로 변환합니다.

  5. 문자열 형식 변환

    문제의 요구사항에 맞는 24시간제 시간 형식을 반환합니다.

  6. 결과 반환

    최종적으로 원본 시간이 24시간제 기준으로 정렬된 리스트를 반환합니다.

알아둬야 할 개념

split() 메서드

풀이 2. datetime 모듈

from datetime import datetime **#1 모듈 선언**

def solution(data): **#2 함수 정의**
    #3 시간 형식 변환
    converted_times = [(datetime.strptime(time, '%I:%M %p').strftime('%H:%M'), time) for time in data]
    sorted_times = sorted(converted_times) **#4 정렬**
    result = [time[1] for time in sorted_times] **#5 정렬된 시간 반환**
    return result **#6 결과 반환**

단계별 풀이 전략

  1. 모듈 선언

    날짜와 시간을 다루는 datetime 모듈을 선언합니다.

  2. 함수 정의

    코드의 첫 부분에서 solution이라는 함수를 정의합니다. 이 함수는 하나의 인자 data를 받습니다. data는 시간 목록 리스트입니다.