<aside> 💬 lv1, 자료 구조

가장 빠른 항공편

문제 설명

위니브 대표는 실리콘벨리로 출장을 가게 되었습니다. 실리콘벨리의 여러 기업들과 미팅을 잡았고, 날씨로 인해 비행기가 늦을까 하여 실리콘벨리로 가는 가장 빠른 항공편을 선택하려 합니다. 주어진 항공편 정보를 바탕으로 가장 빠르게 도착하는 항공편의 이름을 찾아 출력해 주세요.

각 항공편 정보는 "항공편 이름, 출발 시간, 도착 시간"의 형식으로 주어진 문자열 리스트입니다. 출발 시간과 도착 시간은 "HH:MM" 형식으로 표시됩니다. 가장 빠른 항공편의 이름만 출력하는 것이 목표입니다.


제한 사항


입출력 예

입력 (항공편 정보 리스트) 출력 (가장 빠른 항공편 이름)
["Flight A,07:00,09:30", "Flight B,06:30,09:00", "Flight C,07:30,10:00"] "Flight B"
["Flight D,08:00,10:00", "Flight E,08:30,10:30", "Flight F,07:45,10:15"] "Flight D"

입출력 설명

😺 풀이 1. 클래스

def solution(flights):
    class Flight: **#1 클래스 선언**
        def __init__(self, name, start, end):
            self.name = name
            self.start = start
            self.end = end

        def __lt__(self, other):
            return self.end < other.end

    flight_objects = [] **#2 인스턴스 선언**
    for flight in flights:
        name, start, end = flight.split(",")
        flight_objects.append(Flight(name, start, end))

    flight_objects.sort() **#3 정렬**

    return flight_objects[0].name **#4 결과 반환**

단계별 풀이 전략

  1. 클래스 선언

    Flight 클래스를 정의합니다. 항공편의 이름, 출발시간, 도착시간을 저장하는데 사용합니다.

  2. 인스턴스 선언

    문자열 정보를 기반으로 Flight 인스턴스 리스트를 생성합니다. 이 때 주어진 데이터를 split함수를 사용하여 이름, 출발시간, 도착시간에 넣어줍니다. 그 후, flight_objects리스트에 넣어줍니다. 이 과정을 반복해줍니다.

  3. 정렬

    리스트를 도착 시간 기준으로 항공편 정렬합니다.

  4. 결과 반환

    가장 빠른 항공편의 이름을 반환합니다.

알아둬야 할 개념

클래스


sort

풀이 2. min

def solution(data):
    flights_data = [i.split(',') for i in data] **#1 리스트 생성**
    fastest_flight = min(flights_data, key=lambda x: x[2]) **#2 빠른 항공편 찾기**

    return fastest_flight[0] **#3 결과 반환**

단계별 풀이 전략