
😎풀이
arr
, index
를 초기화
- 전달받은
nestedList
를 flatten
하여 저장
2-1. 각 요소를 순회하며 숫자인 경우 arr
에 추가
2-2. 숫자가 아닌 경우 배열 이므로 getList
를 통해 수를 불러와서 재귀적 flatten
hasNext
가 호출될 경우 현재 포인터가 배열의 크기 내에 존재하는지 확인
next
가 호출될 경우 현재 포인터 인덱스의 값을 반환하고 포인터 이동
class NestedIterator {
private arr: number[]
private index: number
constructor(nestedList: NestedInteger[]) {
this.arr = []
this.index = 0
this.flatten(nestedList)
}
flatten(nestedList: NestedInteger[]): void {
for(const nested of nestedList) {
if(nested.isInteger()) {
this.arr.push(nested.getInteger())
} else {
this.flatten(nested.getList())
}
}
}
hasNext(): boolean {
return this.index < this.arr.length
}
next(): number {
return this.arr[this.index++]
}
}