<aside> 💬 lv0, 정렬

라이캣 CEO의 최근 일정 3개

문제 설명

Untitled

라이캣은 '캣네생선'의 대표로 바쁜 나날을 보내고 있습니다. 그에게는 매주 주간 일정이 요일별로 주어집니다. 각 요일(월요일부터 금요일까지)에는 여러 일정이 있으며, 각 일정은 'YYYY-MM-DD' 형식의 날짜로 주어집니다. 모든 요일의 일정 중에서 최근 3개의 일정을 찾아 'YY-MM-DD 요일' 형식으로 반환하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (일정) 출력 (최근 3개 일정)
{'월': ['2024-01-01', '2024-01-08', '2024-01-15', '2024-01-22'], '화': ['2024-01-02', '2024-01-09', '2024-01-16'], '수': ['2024-01-03', '2024-01-10'], '목': ['2024-01-04', '2024-01-11', '2024-01-18'], '금': ['2024-01-05', '2024-01-12', '2024-01-19', '2024-01-26']} ['24-01-26 금', '24-01-22 월', '24-01-19 금']

입출력 설명

모든 요일의 일정 중 최근 3개의 일정을 찾아 'YY-MM-DD 요일' 형식으로 반환합니다. 예를 들어, 가장 최근의 일정은 '2024-01-26'의 금요일, 그 다음은 '2024-01-22'의 월요일, 그리고 '2024-01-19'의 금요일입니다.

</aside>

😺 풀이 1. datetime 모듈

from datetime import datetime **#1 모듈 정의**

def solution(schedules): **#2 함수 정의**
    **#3 리스트 변환 및 저장**
    all_schedules = []
    for day, dates in schedules.items():
        for date in dates:
            all_schedules.append((date, day))

    all_schedules.sort(key=lambda x: x[0], reverse=True) **#4 정렬**

    recent_three = all_schedules[:3] **#5 요구사항 반영**

    **#6 요일 형식 변환**
    return [
        datetime.strptime(date, "%Y-%m-%d").strftime("%y-%m-%d") + " " + day
        for date, day in recent_three
    ]

단계별 풀이 전략

  1. 모듈 정의

    날짜 조작을 위한 datetime 모듈을 정의합니다.

  2. 함수 정의

    solution이라는 함수를 정의합니다. 이 함수는 하나의 인자 schedules를 받습니다. schedules는 요일과 날짜 리스트로 이루어진 딕셔너리입니다.

  3. 리스트 변환 및 저장

    모든 일정을 저장할 리스트를 선언합니다. 각 아이템에서 요일과 날짜 리스트를 뽑아냅니다. 뽑아낸 날짜 리스트에서 각 날짜를 (날짜, 요일) 형식의 튜플로 all_schedules 리스트에 저장합니다.

  4. 정렬

    날짜를 기준으로 내림차순 정렬합니다.

  5. 요구사항 반영

    최근 3개 일정을 뽑아 recent_three 변수에 저장합니다.

  6. 요일 형식 변환

    선택된 일정을 'YY-MM-DD 요일' 형식으로 변환합니다. " " 는 날짜와 요일 사이의 공백을 의미합니다.

알아둬야 할 개념

datetime


strftime