BJ - 단어 공부

Goody·2021년 2월 10일
0

알고리즘

목록 보기
37/122

문제

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

예시

INPUT_1

Mississipi

OUTPUT_1

?

INPUT_2

zZa

OUTPUT_2

Z

풀이

  • 객체를 하나 생성하고, 주어진 문자열을 돌면서 객체 내에 해당 문자열 key 가 있는지 확인한다.
  • 없으면 key를 생성하고, value 를 1로 초기화한다.
  • 있으면 해당 keyvalue 를 1 증가시킨다.
  • 객체 내 프로퍼티 중 value의 최댓값을 구한다.
  • 객체 내 key 중 앞에서 구한 최댓값을 value로 갖는 key를 찾는다.

코드

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

let input = "";

rl.on("line", function (line) {
    input += (line);
    rl.close();
}).on("close", function () {
    const obj = {}
    for(let i = 0; i < input.length; i++) {
        if(!obj[input[i].toLowerCase()]) obj[input[i].toLowerCase()] = 1;
        else obj[input[i].toLowerCase()] ++;
    }

    const keyArr = Object.keys(obj);
    const valueArr = Object.values(obj);

    let max = Math.max(...valueArr);
    if(valueArr.lastIndexOf(max) === valueArr.indexOf(max)) {
        console.log(keyArr[valueArr.indexOf(max)].toUpperCase());
    } else {
        console.log("?");
    }
    process.exit();
});

0개의 댓글