문제
https://school.programmers.co.kr/learn/courses/30/lessons/160586
자바스크립트
function solution(keymap, targets) {
// 점수 Key & Value 객체 생성
let scoreObj = {};
for (let i = 0; i < keymap.length; i++) {
for (let j = 0; j < keymap[i].length; j ++) {
if (Object.keys(scoreObj).includes(keymap[i][j]) && (scoreObj[keymap[i][j]] > j + 1)) {
// 눌러야 하는 횟수가 더 작다면 최신화
scoreObj[keymap[i][j]] = j + 1;
} else if (Object.keys(scoreObj).includes(keymap[i][j])) {
// 기존 값이 있고 누르는 횟수가 더 적다면 계속 진행
continue;
} else {
// 아예 값이 없을경우 횟수 기록
scoreObj[keymap[i][j]] = j + 1;
}
}
}
// 점수 계산
let answer = new Array(targets.length).fill(0);
for (let i = 0; i < targets.length; i++) {
for (let j = 0; j < targets[i].length; j ++) {
if (!Object.keys(scoreObj).includes(targets[i][j])) {
// 중간에 1개라도 문자열을 완성하지 못한다면 그 단어는 완성하지 못하므로 -1 부여 후 escape
answer[i] = -1;
break;
} else {
let score = scoreObj[targets[i][j]];
if (score) {
answer[i] += score;
}
}
}
}
return answer;
}
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 방문 길이 - 자바스크립트 (0) | 2024.10.13 |
---|---|
[프로그래머스] 공원 산책 (1) | 2024.10.12 |
[프로그래머스] 추억 점수 (0) | 2024.10.10 |
[프로그래머스] 수 조작하기 1 (0) | 2024.10.10 |
[프로그래머스] 글자 이어 붙여 문자열 만들기 (0) | 2024.10.10 |