[JS] 백준 10809 - 알파벳 찾기

n-u·2022년 7월 19일
0

Algorithm

목록 보기
28/33
post-thumbnail

백준 10809 - 알파벳 찾기

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(" "));

문제풀이 과정

  1. 구상
  • 입력값인 input의 인덱스 값을 이용해서 알파벳 순서의 배열에 넣어준다.
  1. 풀이
  • 중첩 for문을 이용해 stringArr(알파벳 문자가 들어있는 배열)에 input배열의 요소와 같은 것을 찾아 내고, 찾은 요소를 input의 인덱스 값으로 변경 시켜준다.
  • 새로운 for문을 이용해 변경되지 않은 요소들은 문자타입이므로, 문자타입만을 골라 요소의 값을 -1로 변경한다.
  • 출력할때에는 배열을 문자열로 출력해야 하기 때문에 join()메서드를 사용해서 배열을 문자로 변경하여 출력한다

문제를 풀면서 겪은 에러 및 생각

  • map()을 이용해 배열의 요소를 변경할려고 했는데 배열의 요소들이 undefined가 나와서 for문으로 변경했다.
  • 처음 for문 안에서 다 해결할려고 했는데 else문안에 input[i] != stringArr[j]일때의 경우에 -1을 넣으려고 하니, 출력되는 배열의 모든 요소가 -1이 되어 새로운 for문을 돌려 -1값을 배열에 넣어줬다.
  • 뭔가 이 방법 보다 더 좋은 방법이 있을 것 같긴 한데.. 잘 모르겠다.

이번 문제는 검색하지 않고 내가 문제를 보고 구상하고 문제를 풀어서 뿌듯하다 ㅎㅎㅎ




Reference

join메서드

❗아스키코드를 이용해 문제푸는 방식

https://gurtn.tistory.com/48

  • 알파벳의 아스키코드는 97 ~ 122 번이다.
  • String.fromCharCode()를 이용하게 되면 인자로 들어온 숫자를 아스키코드가 가지고 있는 문자열로 변환해주는데 input에 indexOf를 이용해 input안에 들어온 아스키코드의 값이 들어있는지 체크한다.
  • index0f()메서드를 이용해 배열에 indexOf()메서드 인자의 값이 없으면 -1을 반환하게 되는데 그 값을 새로운 배열에 넣어준다.

알게 된것

  • 숫자, 문자를 아스키코드로 변환 : charCodeAt()
  • 아스키코드를 문자로 변환 : String.formCharCode()
profile
기록하며 발전하는 삶

0개의 댓글