말랑한 하루
[Programmers] 보석 쇼핑 (Lv 3, JavaScript) 본문
반응형
[ 학습 내용 ]
Map()
1. 생성
var map = new Map();
2. key-value 삽입 및 삭제
map.set("key", "value");
map.delete("key");
3. 요소 순회
// forEach 구문을 활용해 value, key 사용하기
map.forEach((value, key, map) => {
console.log();
}, thisArg)
// map의 item을 순회, map은 삽입 및 삭제에 순서가 유지됨
var iterator_key = map.keys();
var iterator_values = map.values();
var iterator_keys_values = map.entires();
for(var i=0; i<map.size; i++) {
iterator.next().value;
}
while(true) {
var item = map.values().next().value;
}
Set()
1. 생성
var items = ["JavaScript", "C++", "Java", "JavaScript", "C++", "Python"];
var set = new Set(items);
2. 추가 및 삭제
set.add(item);
set.delete(item);
3. 요소 순회
var iterator_values_values = set.entires();
var iterator_values = set.values();
while(true) {
var item = iterator.next().value;
}
[ 소스 코드 ]
function solution(gems) {
var cnt = new Set(gems).size;
var gem_map = new Map();
var answer = [1, gems.length];
gems.forEach((gem, index) => {
gem_map.delete(gem);
gem_map.set(gem, index);
console.log()
if (gem_map.size === cnt) {
var window = [gem_map.values().next().value + 1, index + 1];
answer = answer[1] - answer[0] <= window[1] - window[0] ? answer : window;
}
})
return answer;
}
[ 코드 분석 ]
Js의 Map에서 요소가 추가되는 경우, Update되지 않는 set에 대해 요소의 순서를 그대로 유지하고 있음을 활용해 진행한다.
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 캐시 (Lv 2, JavaScript) (0) | 2022.09.19 |
---|---|
[Programmers] 불량 사용자 (Lv 3, JavaScript) (0) | 2022.07.20 |
[Programmers] 수식 최대화 (Lv 2, JavaScript) (0) | 2022.07.18 |
[Programmers] 거리두기 확인하기 (Lv 2, JavaScript) (0) | 2022.07.13 |
[Programmers] 괄호 변환 (Lv 2, JavaScript) (0) | 2022.07.13 |
Comments