학습
시험

게으름뱅이

난이도
INTERMEDIATE

문제 설명

박늘보는 하루에 하나씩 할 일(todo)을 받지만, 실제 작업은 이틀에 하나씩 하는 게으름뱅이입니다. 즉, 홀수번째 날에는 할 일을 받기만 하고, 짝수번째 날에는 할 일을 받은 후 쌓인 할 일 중 하나를 처리합니다. 각각의 할 일(todo)에는 이름과 마감 기한 그리고 중요도가 부여됩니다.

박늘보는 아래와 같은 기준으로 처리할 일을 고릅니다.

  • 마감 기한이 빠른 일을 먼저 처리한다.
  • 마감 기한이 같은 일이 여러 개 있다면, 그 중에서 중요도가 높은 일을 먼저 처리한다.
  • 마감 기한과 중요도가 같은 일이 여러 개 있다면, 그 중에서 이름이 사전 순으로 앞선 일을 먼저 처리한다.

박늘보에게 n일 동안 매일 1개씩 주어지는 할 일 정보 todoList가 주어질 때, 2n일 동안 박늘보가 처리하는 일의 이름을 순서대로 반환하는 solution 함수를 작성하시오.


제한 사항

  • todoList의 길이는 100,000 이하입니다.
  • todoList의 각 원소는 [이름(name), 마감 기한(due date), 중요도(priority)]로 주어집니다.
    • 이름(name)은 길이가 1 이상 20 이하이고, 알파벳 소문자로만 이루어진 문자열입니다.
      • 동일한 이름의 todo는 주어지지 않습니다.
    • 마감 기한(due date)은 MM/DD/YYYY 형식의 문자열입니다. (ex. "12/31/2024")
    • 중요도(priority)는 "CRITICAL", "HIGH", "MODERATE", "LOW", "MINIMAL"중 하나로 주어집니다.
      • 우선순위는 "CRITICAL" > "HIGH" > "MODERATE" > "LOW" > "MINIMAL"입니다.

예시 테스트케이스 설명

테스트케이스 번호 todoList return
1 [["presentation","11/10/2030","HIGH"],["hotfix","11/10/2030","CRITICAL"],["laundry","11/10/2030","LOW"]] ["hotfix","presentation","laundry"]
2 [["meditation","06/15/2026","HIGH"],["workout","06/15/2026","CRITICAL"],["research","06/15/2026","MODERATE"],["booking","06/15/2026","LOW"],["cleaning","08/12/2025","LOW"]] ["workout","meditation","cleaning","research","booking"]
3 [["traveling","01/17/2026","MODERATE"],["hiking","01/17/2026","MODERATE"],["shopping","01/17/2026","MODERATE"]] ["hiking","shopping","traveling"]

1번 테스트케이스 설명

  • 아래와 같은 과정으로 박늘보가 할 일을 처리합니다.

    일차 현재 누적된 todo 오늘 처리한 todo
    1일 차 [["presentation","11/10/2030","HIGH"]] X
    2일 차 [["presentation","11/10/2030","HIGH"]] "hotfix"
    3일 차 [["presentation","11/10/2030","HIGH"], ["laundry","11/10/2030","LOW"]] X
    4일 차 [["laundry","11/10/2030","LOW"]] "presentation"
    5일 차 [["laundry","11/10/2030","LOW"]] X
    6일 차 [] "laundry"

2번 테스트케이스 설명

  • 아래와 같은 과정으로 박늘보가 할 일을 처리합니다.

    일차 현재 누적된 todo 오늘 처리한 todo
    1일 차 [["meditation","06/15/2026","HIGH"]] X
    2일 차 [["meditation","06/15/2026","HIGH"]] "workout"
    3일 차 [["meditation","06/15/2026","HIGH"],["research","06/15/2026","MODERATE"]] X
    4일 차 [["research","06/15/2026","MODERATE"],["booking","06/15/2026","LOW"]] "meditation"
    5일 차 [["cleaning","08/12/2025","LOW"],["research","06/15/2026","MODERATE"],["booking","06/15/2026","LOW"]] X
    6일 차 [["research","06/15/2026","MODERATE"],["booking","06/15/2026","LOW"]] "cleaning"
    7일 차 [["research","06/15/2026","MODERATE"],["booking","06/15/2026","LOW"]] X
    8일 차 [["booking","06/15/2026","LOW"]] "research"
    9일 차 [["booking","06/15/2026","LOW"]] X
    10일 차 [] "booking"

3번 테스트케이스 설명

  • 아래와 같은 과정으로 박늘보가 할 일을 처리합니다.

    일차 현재 누적된 todo 오늘 처리한 todo
    1일 차 [["traveling","01/17/2026","MODERATE"]] X
    2일 차 [["traveling","01/17/2026","MODERATE"]] "hiking"
    3일 차 [["shopping","01/17/2026","MODERATE"],["traveling","01/17/2026","MODERATE"]] X
    4일 차 [["traveling","01/17/2026","MODERATE"]] "shopping"
    5일 차 [["traveling","01/17/2026","MODERATE"]] X
    6일 차 [] "traveling"