문제 설명
박늘보는 하루에 하나씩 할 일(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"