//* 인풋 - 디폴트
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');
//* 인풋 - 커스텀, 함수 콜
let word = input[0].trim().toUpperCase();
console.log(sol(word));
//* 로직함수
function sol(word) {
let map = new Map();
let len = word.length;
for (let i = 0; i < len; i++) {
map.set(word[i], (map.get(word[i]) || 0) + 1);
}
let max = Math.max(...map.values());
let sameCount = 0;
for (let [k, v] of map) {
if (v === max) {
sameCount++;
answer = k;
}
}
return sameCount === 1 ? answer : '?';
}
1) 알파벳 갯수만큼 배열 0으로 뿌리고
2) 아스키코드 이용해서 배열에 +1 함
3) 배열의 맥스값 구하고
4) 맥스 같은게 있으면 ? 없으면 해당 배열의 순서보고 다시
아스키코드값으로 알파벳 출력
Java로 풀때였나 그때는 다른 사람 풀이와 비슷하게 코드값으로 했던것 같은데, 지금 보니 Map 활용하는게 좀 더 간단한 것 같다.
프로그래머스 - 해시 문제에서 배운 걸 사용해보았다. 정말! 좋은 기능이다. ㅎㅎ
map.set(key, (map.get(key) || 0) + 1);