문제
답안
function solution(keymap, targets) {
const answer = [];
// 키의 최솟값을 담을 객체 선언
const mapKey = new Map();
// keymap에 있는 값인 keys 값 생성"ABACD", "BCEFD"
for(keys of keymap){
for(let i = 0; i < keys.length; i++){
(mapKey.has(keys[i])) ?
// 선언한 객체에 값이 있다면, map.set을 이용해 값이 작은 값을 넣어준다.(값 비교는 map.get으로)
mapKey.set(keys[i], Math.min(mapKey.get(keys[i]), i+1)) :
// 값이 없다면 keys[i]값과 i+1 값을 객체에 넣어준다.
mapKey.set(keys[i], i+1);
}
}
//targets 안에 있는 tar 값 생성"ABCD", "AABB"
for(tar of targets){
let keyNum = 0;
for(let i = 0; i < tar.length; i++){
// tar[i]값이 mapKey에 있다면
if(mapKey.has(tar[i])){
// mapKey에 있는 tar[i] 값을 keyNum에 넣어준다.
keyNum += mapKey.get(tar[i]);
} else {
// 없다면 keyNum 에 -1 을 넣어준다.
keyNum = -1;
break;
}
}
answer.push(keyNum);
}
return answer;
}
후기
객체를 새로 만들고, 그 값을 이용한 풀이는 나에게 너무 어색해서 여러시간 고민 후에 답지를 찾아본 문제이다.
새로운 객체를 만들고 has, get, set과 같은 방법을 이용해 푸는 방법이 낯설었다.
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 둘만의 암호 (Javascript) (2) | 2023.11.20 |
---|---|
프로그래머스 Level 1 - 신고 결과 받기 (Javascript) (0) | 2023.11.19 |
프로그래머스 Level 1 - 체육복 (Javascript) (2) | 2023.11.17 |
프로그래머스 Level 1 - 약수의 개수와 덧셈 (Javascript) (0) | 2023.11.16 |
프로그래머스 Level 1 - 내적 (Javascript) (0) | 2023.11.15 |