
😎풀이
head를 통해 ListNode 길이 측정
- 몫과 나머지를 통해 한 파트당 몇 개의 노드를 할당할지 결정
- 각 파트에 N개의 노드 할당
- 할당된 각 파트의 노드를 담은 배열 반환
function splitListToParts(head: ListNode | null, k: number): Array<ListNode | null> {
const parts = Array.from({ length: k }, () => null)
let len = 0
let mock = head
while (mock) {
len++
mock = mock.next
}
const quotient = Math.floor(len / k)
let remain = len % k
let curr = head
for (let i = 0; i < k; i++) {
if (!curr) break
parts[i] = curr
const partSize = quotient + (remain > 0 ? 1 : 0)
if (remain > 0) remain--
for (let j = 0; j < partSize - 1; j++) {
if (curr) curr = curr.next
}
if (curr) {
const nextNode = curr.next
curr.next = null
curr = nextNode
}
}
return parts;
};