음악 앱의 재생목록은 연결 리스트 로 저장되어 있습니다. 각 노드의 val은 곡의
재생시간(초)이고, next는 다음 곡을 가리킵니다.
사용자가 "짧은 곡 정리" 버튼을 누르면, 재생시간이 limit초 이하 인 곡을
재생목록에서 모두 제거 해야 합니다. 남은 곡들의 순서는 원래 순서를 유지합니다.
재생목록의 첫 노드 head와 기준 시간 limit이 주어질 때, 정리된 재생목록의
첫 노드를 반환하는 solution(head, limit) 함수를 작성하세요.
모든 곡이 제거되어 재생목록이 비면 null을 반환합니다.
class ListNode {
val: number; // 곡의 재생시간(초)
next: ListNode | null; // 다음 곡
}
function solution(head: ListNode | null, limit: number): ListNode | null| head | limit | 결과 | 설명 |
|---|---|---|---|
[180, 95, 210, 60, 240] |
100 |
[180, 210, 240] |
95초·60초 곡 제거 |
[30, 45, 200, 50, 300] |
60 |
[200, 300] |
머리에서 연속 두 곡 제거 |
[10, 20, 30] |
60 |
[] |
전부 제거되어 빈 목록 |
[120, 150] |
100 |
[120, 150] |
제거할 곡 없음 |
head는 null)val: 1 이상 100,000 이하의 정수limit: 1 이상 100,000 이하의 정수limit과 같은 곡도 제거 대상입니다 (이하 조건).시간 복잡도 목표: O(n), 추가 공간 O(1)
▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.