<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>
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 결과 반환**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 times
를 받습니다. times
는 HH/MM/AM
혹은 HH/MM/PM
형식의 리스트입니다. convert_time
함수를 key
값으로 정렬한 뒤 반환하고 있습니다.
함수 정의
times
의 각 원소인 time
을 인자로 받습니다.
문자열 분할
주어진 시간 문자열을 split
메서드로 공백(” “)과 콜론(”:”)을 기준으로 시간(hh), 분(mm), 오전/오후(ampm)로 나눕니다.
24시간제 변환
PM
이면서 12시가 아닌 경우, 12
를 더합니다. AM
이면서 12시인 경우, 00
으로 변환합니다.
문자열 형식 변환
문제의 요구사항에 맞는 24시간제 시간 형식을 반환합니다.
결과 반환
최종적으로 원본 시간이 24시간제 기준으로 정렬된 리스트를 반환합니다.
split() 메서드
기본 형태: 문자열.split(구분자)
개념: 주어진 구분자를 기준으로 문자열을 분할하여 리스트로 반환합니다.
# split() 메서드 사용
text = "apple,banana,cherry"
fruits = text.split(",")
print(fruits) # ['apple', 'banana', 'cherry']
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 결과 반환**
모듈 선언
날짜와 시간을 다루는 datetime
모듈을 선언합니다.
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 data
를 받습니다. data
는 시간 목록 리스트입니다.