문제 링크
풀이
const input = require("fs").readFileSync("/dev/stdin").toString().trim().split(/\s/);
const n = +input[0];
const m = +input[1];
const arr = input.slice(2, n+2);
const pokemonMap = new Map(arr.map((v, i) => [v, i+1]));
const question = input.slice(n+2);
const answer = [];
question.forEach(v => {
if (Number.isNaN(+v)) answer.push(pokemonMap.get(v));
else answer.push(arr[+v-1]);
});
console.log(answer.join("\n"));
포켓몬 이름을 저장한 배열과, 그 배열로 포켓몬 이름과 번호를 키와 값으로 갖는 Map 객체를 준비한다. 문제가 문자열이면 Map객체에서 번호를 찾고, 숫자면 배열에서 포켓몬 이름을 찾는다.
무언가 깔끔하진 않지만, Map객체 없이 배열만으로 번호를 찾으려면 arr.indexOf를 사용해야 하는데, 이러면 시간 초과가 뜬다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 11652] 카드 with Node.js (0) | 2021.04.29 |
---|---|
[백준 1874] 스택 수열 with Python (0) | 2021.04.28 |
[백준 15649] N과 M (1) with Python (0) | 2021.04.27 |
[백준 1120] 문자열 with Node.js (0) | 2021.04.26 |
[백준 9461] 파도반 수열 with Python (0) | 2021.04.26 |