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
반응형