[JS] 백준 10809번 알파벳 찾기
업데이트:
🔍 문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
⚪ 입력
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
🟢 출력
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, … z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
📝 정답 코드
const fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('');
const result = []
for(let i = 97; i<=122; ++i){
let alphabet = String.fromCharCode(i)
let answer = input.indexOf(alphabet)
result.push(answer)
}
for(let i=0; i<26; ++i){
console.log(result[i])
}
Code Review 💻
📍 String.fromCharCode() 메서드는 UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환한다. 알파벳 a부터 z까지는 아스키코드에서 97~122번에 해당하므로 for문을 이렇게 작성했다.
📍 indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 인덱스를 반환하고 존재하지 않으면 -1을 반환한다. 이정도면 문제에서 이 메서드를 쓰라고 유도한 것 같기도 하다.
input 배열에서 alphabet을 a부터 z까지 반복하여 일치하는 인덱스를 찾고 result 배열에 집어넣었다.
💁🏻♀️ 마지막엔 출력값과 동일하게 해주기 위해 반복문을 이용하여 원소만 출력해주었다.
댓글남기기