문제

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

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

해결 과정

  1. 입력할 문자열 선언 => 대문자로 변환
  2. 알파벳이 들어간 배열 생성 => Alphbet
  3. 알파벳 갯수만큼 0이 들어간 배열 생성 => arr
  4. for문을 사용해서 입력받은 문자와 알파벳 배열 비교
    • 같은 문자가 있으면 해당 인덱스와 같은 arr 위치에 +1
  5. arr 배열에서 최대값 찾기
  6. 최대값이 한개이면 해당 인덱스의 문자 출력, 2개 이상이면 ? 출력
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdin
});

let input = [];

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

}).on('close',function (){

    let str = input[0].toUpperCase(); // 입력한 문자
    let Alphbet = []; // 알파벳 배열
    let arr = []; // 알파벳 갯수만큼 0을 넣은 배열

    for (let i = 65; i<=90; i++){
        Alphbet.push(String.fromCharCode(i))
    }

    for (let i = 0; i<26; i++){
        arr[i] = 0;
    }

    for (let i = 0; i<str.length; i++){
        for (let j = 0; j<arr.length; j++){
            if (str[i] === Alphbet[j]){
                arr[j]++;
            }
        }
    }

    let count = 0;

    for (let i = 0; i<arr.length; i++) {
        if (Math.max.apply(null, arr) === arr[i]) {
            count++;
        }
    }
    if (count >1){
        console.log('?')
    } else if (count === 1){
        console.log(Alphbet[arr.indexOf(Math.max.apply(null, arr))]) // 인덱스 번호의 문자
    }

    // console.log(arr.indexOf(Math.max.apply(null, arr))) // 최대값 인덱스 번호
    // console.log(Alphbet[arr.indexOf(Math.max.apply(null, arr))]) // 인덱스 번호의 문자

});
profile
코더가 말고 개발자가 되고싶은...

0개의 댓글