IT/Programmers
[Programmers] 대충 만든 자판
개발자희망생고롸파덕
2024. 2. 28. 15:05
사용언어 : javascript
lv.1
#문제
#제출코드
function solution(keymap, targets) {
let answer = [];
let map = new Map();
keymap.map(item=> {
const list = item.split('');
list.map((k, i) => {
if(!map.has(k) || (map.has(k) && (i+1) <= map.get(k))){
map.set(k, (i+1))
}
})
})
targets.map(item => {
const tmp = item.split('');
let count = 0;
for(let i=0; i<tmp.length; i++){
if(!map.has(tmp[i])){
count = -1;
break;
}
count += map.get(tmp[i])
}
answer.push(count)
})
return answer;
}
map 함수를 이용해 최소 입력 수를 넣어주고 계산하는 방향으로 코드를 짰다. 좀 더 짧게 짤 수 있을것 같았는데.. 우선 빠르게 푸는걸 목표로 하고, 제출한 후에 다른 분들이 작성하신 코드를 보니, reduce를 사용해서 코드 길이를 확 줄인걸 볼 수 있었다...! (왜 이걸 생각 못했지)
reduce.. 자주 잊지 말고 다음엔 활용해봐야겠다.
#다른사람풀이
function solution(keymap, targets) {
const answer = [];
const map = {}
for (const items of keymap) {
items.split('').map((item, index) => map[item] = (map[item] < index+1 ? map[item] : index+1))
}
for (const items of targets) {
answer.push(items.split('').reduce((cur, item) => cur += map[item], 0) || -1)
}
return answer;
}