😎풀이

  1. arr, index를 초기화
  2. 전달받은 nestedListflatten 하여 저장
    2-1. 각 요소를 순회하며 숫자인 경우 arr에 추가
    2-2. 숫자가 아닌 경우 배열 이므로 getList를 통해 수를 불러와서 재귀적 flatten
  3. hasNext가 호출될 경우 현재 포인터가 배열의 크기 내에 존재하는지 확인
  4. 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++]
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글