memostack
article thumbnail
블로그를 이전하였습니다. 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

 

GitHub - bluemiv/Algorithm: 알고리즘 풀이

알고리즘 풀이. Contribute to bluemiv/Algorithm development by creating an account on GitHub.

github.com

 

풀이 결과

문제 풀이 결과

 

관련 글

2022.07.21 - [Algorithm/Beakjoon] - jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기

 

jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기

쉬운 문제는 웹 사이트에서 풀어도 되지만, 복잡한 문제는 여러 경우의 케이스에 대해서 실행해보는 경우가 생긴다. 백준에서는 다른 알고리즘 문제 사이트와 다르게 웹에서 실행해볼수가 없어

memostack.tistory.com

 

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!