맨처음
let fs = require("fs");
let input = fs.readFileSync("inp.txt").toString().toLowerCase();
let alphabet = [...new Set(input.split(""))];
console.log(alphabet);
let maxChar = "";
let maxCount = 0;
for (let i = 0; i < alphabet.length; i++) {
let count = input.split(alphabet[i]);
console.log(count);
if (count > maxCount) {
maxChar = alphabet[i];
maxCount = count;
} else if (count === maxCount) {
maxChar = "?";
}
}
console.log(maxChar.toUpperCase());
이렇게 풀어보니 답이나왔는데 백준에 제출해보니 출력초과가 나왔다.
왜인지를 도저히모르겠어서 포기하고...ㅠㅠ
그래서 밑의 코드처럼 구하는게 대부분인것 같다.
let input = require('fs').readFileSync('/dev/stdin').toString().toLowerCase();
const result = new Array(26).fill(0);
for (let i = 0; i < input.length; i++) {
result[input.charCodeAt(i) - 97] ++;
}
const max = Math.max(...result);
const index = result.indexOf(max);
let isSame = false;
for (let j = 0; j < 26; j++) {
if (result[j] === max && index != j) {
isSame = true;
break;
}
}
console.log(isSame ? "?" : String.fromCharCode(index + 65));