https://www.acmicpc.net/problem/1157
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
const input = require("fs").readFileSync("dev/stdin").toString().trim();
const word = input.toUpperCase().split("");
const abc = [...new Set(word)];
var count = 0;
var answer;
for (let i = 0; i < abc.length; i++) {
var temp = 0;
for (let j = 0; j < word.length; j++) {
if (abc[i] == word[j]) temp++;
if (j == word.length - 1 && count <= temp) {
if (count == temp) {
answer = "?";
break;
} else {
count = temp;
answer = abc[i];
}
}
}
}
console.log(answer);
먼저 input 값을 대문자 혹은 소문자로 변환시켜 word 라는 변수에 배열의 형태로 저장하였다.
저장한 값을 중복값을 제외시키기 위해 Set 자료형을 사용하여 abc 라는 이름으로 저장시켜주자.
그후 이중 반복문을 통해 각 단어의 개수를 세어 먼저 temp 변수에 저장시켜준다.
대상 단어의 개수를 끝까지 다 세었고, 개수(temp) 가 count 보다 크다면 count 값을 temp 로 변경시켜주고 answer 을 그때의 값으로 저장한다.
만약 count 와 temp 의 수가 같다면 문자열 내에 같은 수의 단어가 있는 것이므로 ? 를 저장해 주었다.
끝까지 반복 하면 가장 많이 사용된 단어가 answer 에 저장된다.
매우 무식한 방법으로 푼것 같다.