https://www.acmicpc.net/problem/10809
const fs = require("fs");
const file = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(file).toString().split("");
let stringArr = ["a", "b", "c", "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
for (let i = 0; i < stringArr.length; i++) {
for (let j = 0; j < input.length; j++) {
if (input[j] === stringArr[i]) {
stringArr[i] = j;
}
}
}
for (let k = 0; k < stringArr.length; k++) {
if (typeof stringArr[k] === "string") stringArr[k] = -1;
}
console.log(stringArr.join(" "));
stringArr
(알파벳 문자가 들어있는 배열)에 input배열의 요소와 같은 것을 찾아 내고, 찾은 요소를 input의 인덱스 값으로 변경 시켜준다.문자타입
이므로, 문자타입만을 골라 요소의 값을 -1
로 변경한다.join()
메서드를 사용해서 배열을 문자로 변경하여 출력한다map()
을 이용해 배열의 요소를 변경할려고 했는데 배열의 요소들이 undefined
가 나와서 for문으로 변경했다.else문안에 input[i] != stringArr[j]일때
의 경우에 -1
을 넣으려고 하니, 출력되는 배열의 모든 요소가 -1
이 되어 새로운 for문을 돌려 -1
값을 배열에 넣어줬다.이번 문제는 검색하지 않고 내가 문제를 보고 구상하고 문제를 풀어서 뿌듯하다 ㅎㅎㅎ
String.fromCharCode()
를 이용하게 되면 인자로 들어온 숫자를 아스키코드가 가지고 있는 문자열로 변환해주는데 input에 indexOf
를 이용해 input안에 들어온 아스키코드의 값이 들어있는지 체크한다.index0f()
메서드를 이용해 배열에 indexOf()
메서드 인자의 값이 없으면 -1
을 반환하게 되는데 그 값을 새로운 배열에 넣어준다.charCodeAt()
String.formCharCode()