//* 인풋 - 디폴트
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');
//* 인풋 - 커스텀
const inputZero = input[0].split(' ').map((num) => Number(num));
const n = inputZero[0];
const m = inputZero[1];
let map = new Map();
let mapRevere = new Map();
for (let i = 1; i <= n; i++) {
map.set(i, input[i].trim());
mapRevere.set(input[i].trim(), i);
}
for (let i = 1; i <= m; i++) {
if (map.has(Number(input[i + n]))) {
console.log(map.get(Number(input[i + n])));
} else {
console.log(mapRevere.get(input[i + n].trim()));
}
}
Java로 한번 풀었던 문제고, 풀이가 그대로 기억나서 JS로 옮기기만 했다.
그런데도 시간이 꽤나 걸렸다.
이유는 "인풋이 숫자인지 영어인지 어떻게 구분하나?"를 모르겠어서 그랬다. Java에선 parseInt할 때 try-catch문으로 가느냐에 따라 예외처리를 했었는데 (꼼수?ㅋㅋ) JS에선 typeof Number(인풋)
해도 string을 인풋으로 넣어도 number()에 넣으면 number로 인식하더라.... 🤣🤣
울어야 되나 웃어야 되나 ㅋㅋㅋ
아무튼 Map 2개 만들고 has로 확인해서 출력했다...
이제 다른 사람들의 풀이를 봐야겠다.
JS...
자유분방한 JS...
그래서 오히려 더 까다롭다.