[JS][백준]10809_알파벳 찾기
Algorithm/BaeKJoon

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

문제 번호

 

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