
😎풀이
iterator
복제
peekVal
을 통해 다음 값 미리 저장
peek
메서드 호출 시 peekVal
반환
next
메서드 호출 시 curVal
에 현재 peekVal
을 저장해두고 다음 값으로 갱신 후 curVal
반환
hasNext
메서드 호출 시 peekVal
의 존재 여부 반환
class PeekingIterator {
private iterator: Iterator
private peekVal: number
constructor(iterator: Iterator) {
this.iterator = iterator
this.peekVal = iterator.hasNext() ? iterator.next() : null
}
peek(): number {
return this.peekVal
}
next(): number {
const curVal = this.peekVal
this.peekVal = this.iterator.hasNext() ? this.iterator.next() : null
return curVal
}
hasNext(): boolean {
return !!this.peekVal
}
}