문제 번호
알고리즘 분류
구현, 문자열
문제 풀이
각 알파벳의 개수를 새어줄 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 |