N

(Leet Code JS)Snapshot Array 본문

Leet Code 알고리즘

(Leet Code JS)Snapshot Array

naeunchan 2022. 1. 10. 14:56
728x90
반응형

https://leetcode.com/problems/snapshot-array/

 

Snapshot Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

Map을 이용한 문제 풀이.

 

생성자가 호출될 때

전체 스냅샷이 저장될 snapshots(Map),

현재 스냅샷을 나타내는 array(Map),

현재 스냅 Id를 나타내는 snapId를 선언한다.

 

set(index, val) 함수.

현재 스냅샷에 key: index, value: val 로 저장한다.

 

snap() 함수.

현재 스냅샷을 나타내는 array를 snapshots 맵에 저장한다.

저장할 때는 snapId를 key로, new Map(this.array)를 value로 저장한다.

리턴값은 현재 snapId를 반환하면서 후위 증가 연산자로 + 1을 해준다.

 

get(index, snap_id) 함수.

snap_id를 가지는 스냅샷에서 index에 해당하는 값을 리턴하면 된다.

그러기 위해서는 this.snapshots에서 snap_id가 있는지 확인을 해야 한다.

만약 없다면 0을 리턴.

존재한다면 해당 map에서 index를 key로 가지는 value를 리턴하면 된다.

class SnapshotArray{
    constructor(length){
        this.snapshots = new Map();
        this.array = new Map();
        this.snapId = 0;
    };

    set(index, val) {
        this.array.set(index, val);
    };

    snap() {
        this.snapshots.set(this.snapId, new Map(this.array));
        
        return this.snapId++;
    };

    get(index, snap_id) {
        if(this.snapshots.get(snap_id).has(index)){
            return this.snapshots.get(snap_id).get(index);
        }
        
        return 0;
    };
}
728x90
반응형