문제 번호
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
알고리즘 분류
구현, 문자열
문제 풀이
아스키 코드를 문제풀이에 사용하였다.
문제에서 소문자만 주어진다 하였다. 그래서 문제에서 주어진 단어 S를 스트링으로 입력받았다. 그리고 스트링을 탐색하며 단어의 각 자리의 알파벳의 아스키코드에서 'a'의 아스키 코드를 뺀 값을 사용하였다.(97)
for (let i = 0; i < S.length; i++) {
if (answer[S.charCodeAt(i) - Number(97)] === -1)
answer[S.charCodeAt(i) - Number(97)] = i;
}
문자열.charCodeAt()를 사용하여 아스키코드로 변환할 수 있다.
중복되는 알파벳이 나올 수 있다는 점에 유의해서 풀이하면 어렵지 않았다.
전체코드
const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
input = [];
rl.on('line', function (line) {
input.push(line);
}).on('close', function () {
Solution(input);
})
function Solution(input) {
let answer = new Array(26).fill(Number(-1));
let S = String(input[0]);
for (let i = 0; i < S.length; i++) {
if (answer[S.charCodeAt(i) - Number(97)] === -1)
answer[S.charCodeAt(i) - Number(97)] = i;
}
let ret = '';
for (let i = 0; i < answer.length; i++) {
ret += `${answer[i]} `;
}
console.log(ret);
}
특이사항
'Algorithm > BaeKJoon' 카테고리의 다른 글
[JS][백준]1157_단어 공부 (0) | 2021.08.05 |
---|---|
[JS][백준]2675_문자열 반복 (0) | 2021.08.05 |
[JS][백준]1065_한수 (0) | 2021.08.05 |
[JS][백준]4673_셀프 넘버 (0) | 2021.08.05 |
[JS][백준]11720_숫자의 합 (0) | 2021.08.02 |