https://school.programmers.co.kr/learn/courses/30/lessons/176962
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
주어진 과제들의 실행 순서를 정리하는 문제다.
각 과제는 이름, 시작 시간, 실행 시간으로 구성되며,
시작 시간은 "HH:mm" 형식을 분 단위로 변환하여 처리된다.
입력받은 계획들을 Assignment 객체로 변환한 후,
시작 시간 기준으로 오름차순 정렬한다.
정렬된 과제를 순서대로 처리하면서 중단된 과제는 스택에 저장하고,
조건에 따라 남은 시간을 활용해 다시 실행한다.
현재 과제의 종료 시간이 다음 과제의 시작 시간 이후라면,
현재 과제는 중단된 상태로 스택에 저장되고,
실행 시간을 줄인다.
반대로 종료 시간이 충분하다면 과제를 정상적으로 완료한 것으로 간주하고
결과 리스트에 추가한다.
만약 두 과제 사이에 남는 시간이 있다면,
스택에서 중단된 과제를 가져와 남은 시간에 실행한다.
실행 시간이 충분하다면 해당 과제를 완료하고 결과 리스트에 추가하며,
그렇지 않으면 실행 시간을 줄여 다시 스택에 저장한다.
모든 과제를 순회한 후 마지막 과제를 결과에 추가하고,
스택에 남아 있는 중단된 과제들을 역순으로 처리해 결과 리스트에 추가한다.
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 3. 표 편집 (0) | 2025.01.07 |
---|---|
Lv 2. N-Queen (1) | 2025.01.03 |
Lv3. 인사고과 (0) | 2024.12.26 |
Lv 3. 파괴되지 않은 건물 (0) | 2024.12.23 |
Lv 3. 합승 택시 요금 (1) | 2024.12.18 |