[LeetCode] 2622. Cache With Time Limit

Chobby·2024년 6월 28일
1

LeetCode

목록 보기
22/194

class와 Map 자료형을 활용하여 풀이했음
만료기간을 계산하는 로직 때문에 Object 자료형에 setTimeout을 했으나 왜인지 정상동작 하지 않아서 탐구해볼 예정

class TimeLimitedCache {
    // 각 요소의 [0] = 값, [1] = 만료일
    cacheMap = new Map()
    constructor() {}
    
    set(key: number, value: number, duration: number): boolean {
        const now = new Date().getTime()
        const expired = now + duration
        const hasItem = this.cacheMap.has(key) && this.cacheMap.get(key)[1] >= now
        this.cacheMap.set(key, [value, expired])
        return hasItem
    }
    
    get(key: number): number {
        // 요소 없음
        if(!this.cacheMap.has(key)) return -1
        const curItem = this.cacheMap.get(key)
        const now = new Date().getTime()
        // 유효기간 만료
        if(curItem[1] < now) return -1
        return curItem[0]
    }
    
    count(): number {
        const now = new Date().getTime()
        let count = 0;
        for(const [key, [_, expire]] of this.cacheMap) {
            if (now < expire) {
                count++;
            }
        }
        return count;
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글