[JS][백준]1157_단어 공부
Algorithm/BaeKJoon

[JS][백준]1157_단어 공부

문제 번호

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

 

알고리즘 분류

구현, 문자열

 

문제 풀이

 각 알파벳의 개수를 새어줄 alpha라는 배열을 생성한다.

각 대문자 소문자 알파벳의 아스키 코드를 이용하여 대문자일때, 소문자 일때로 나누어서 개수를 구한다.

    // A = 65 Z = 90 a = 97 z = 122
    for (let i = 0; i < S.length; i++) {
        // 대문자일 경우.
        if (65 <= S.charCodeAt(i) && S.charCodeAt(i) <= 90)
            alpha[S.charCodeAt(i) - Number(65)]++;
        // 소문자일 경우.
        else if (97 <= S.charCodeAt(i) && S.charCodeAt(i) <= 122)
            alpha[S.charCodeAt(i) - Number(97)]++;
    }

 

이후 가장 많이 등장한 알파벳을 구한다.

    for (let i = 0; i < alpha.length; i++) {
        if (Number(alpha[i]) > Max) {
            Max = Number(alpha[i]);
            answer = i;
        }
    }

 

마지막으로 가장 많이 등장한 알파벳이 여러개 있는지 count 변수를 이용하여 확인해본다.

    for (let i = 0; i < alpha.length; i++) {
        if (alpha[i] === Max)
            count++;
    }

 

전체코드

const readline = require('readline');
let rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

let input = [];

rl.on('line', function (line) {
    input.push(line);
});
rl.on('close', function () {
    Solution(input)
})

function Solution(input) {
    let answer = 0;

    let alpha = Array(26).fill(0);
    let S = String(input[0]);

    // A = 65 Z = 90 a = 97 z = 122
    for (let i = 0; i < S.length; i++) {
        // 대문자일 경우.
        if (65 <= S.charCodeAt(i) && S.charCodeAt(i) <= 90)
            alpha[S.charCodeAt(i) - Number(65)]++;
        // 소문자일 경우.
        else if (97 <= S.charCodeAt(i) && S.charCodeAt(i) <= 122)
            alpha[S.charCodeAt(i) - Number(97)]++;
    }

    let Max = 0;
    let count = 0;
    for (let i = 0; i < alpha.length; i++) {
        if (Number(alpha[i]) > Max) {
            Max = Number(alpha[i]);
            answer = i;
        }
    }

    for (let i = 0; i < alpha.length; i++) {
        if (alpha[i] === Max)
            count++;
    }


    if (count >= 2) console.log('?');
    else console.log(String.fromCharCode(answer + 65));
}

특이사항

 문자열.fromCharCode를 이용하면 아스키코드를 문자로 바꿀 수 있다.

'Algorithm > BaeKJoon' 카테고리의 다른 글

[JS][백준]2908_상수  (0) 2021.08.05
[JS][백준]1152_단어의 개수  (0) 2021.08.05
[JS][백준]2675_문자열 반복  (0) 2021.08.05
[JS][백준]10809_알파벳 찾기  (0) 2021.08.05
[JS][백준]1065_한수  (0) 2021.08.05