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