
😎풀이
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
}
}