😎풀이

  1. iterator 복제
  2. peekVal을 통해 다음 값 미리 저장
  3. peek 메서드 호출 시 peekVal 반환
  4. next 메서드 호출 시 curVal에 현재 peekVal을 저장해두고 다음 값으로 갱신 후 curVal 반환
  5. 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
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글