블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다
문제
풀이
전체 코드
const solution = (input) => {
const en = new Array(26).fill(0);
let max = Number.MIN_SAFE_INTEGER;
input
.toUpperCase()
.split('')
.forEach((c) => {
const idx = c.charCodeAt() - 65;
en[idx]++;
max = max > en[idx] ? max : en[idx];
});
if (en.filter((n) => n === max).length > 1) return '?';
for (let i = 0; i < en.length; i++) {
if (en[i] === max) return String.fromCharCode(i + 65);
}
};
require('readline')
.createInterface(process.stdin, process.stdout)
.on('line', (input) => {
console.log(solution(input));
})
.on('close', () => {
process.exit(0);
});
상세 풀이
알파벳을 담을 26 크기의 배열을 생성했다. 0번째 값부터 25번째 값은 각각 A부터 Z에 해당한다.
const en = new Array(26).fill(0);
// ...
입력값을 한 문자씩 나눠서 카운트한다. 가장 최대값을 찾기 위해, 최대값(max)도 같이 구한다.
const en = new Array(26).fill(0);
let max = Number.MIN_SAFE_INTEGER;
input
.toUpperCase()
.split('')
.forEach((c) => {
const idx = c.charCodeAt() - 65;
en[idx]++;
max = max > en[idx] ? max : en[idx];
});
// ...
처음에 생성한 배열을 돌면서, 최댓값을 가진 알파벳을 출력한다. String.fromCharCode()
메소드를 활용하면, ascii 코드를 문자로 변경할 수 있다.
단, 최대값을 가지는 알파벳이 여러개인 경우 물음표(?)를 출력한다.
// ...
if (en.filter((n) => n === max).length > 1) return '?';
for (let i = 0; i < en.length; i++) {
if (en[i] === max) return String.fromCharCode(i + 65);
}
전체 코드
https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex01/ex1157.js
풀이 결과
관련 글
2022.07.21 - [Algorithm/Beakjoon] - jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
백준 2941번 / 크로아티아 알파벳 (nodejs 알고리즘 풀이) (0) | 2022.08.25 |
---|---|
백준 5622번 / 다이얼 (nodejs 알고리즘 풀이) (0) | 2022.08.24 |
백준 11720번 / 숫자의 합 (nodejs 알고리즘 풀이) (0) | 2022.08.19 |
백준 10809번 / 알파벳 찾기 (nodejs 알고리즘 풀이) (0) | 2022.08.17 |
백준 1065번 / 한수 (nodejs 알고리즘 풀이) (0) | 2022.08.16 |