👉https://www.acmicpc.net/problem/1157
항상 object을 활용하여 문제를 해결하고 싶다는 생각을 했는데, 이번에 object을 활용하여 문제를 해결하면 좋을거 같아서 활용해 보았다.
문자를 key로 갯수를 value로 하여 그 중 가장 높은 수를 max로 설정하고, 그 max인 것이 1개 이상일 때 '?'를 리턴하게 만들었다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().toLowerCase();
const charMap = {};
console.log(typeof charMap);
for (let char of input){
charMap[char] = charMap[char] ? charMap[char] + 1 : 1;
}
let max = Math.max.apply(null, Object.values(charMap));
let maxChar = '';
let count = 0;
for(let char in charMap){
if(charMap[char] === max){
maxChar = char;
count++;
}
}
if(count > 1){
console.log('?');
}else{
console.log(maxChar.toUpperCase());
}
object에 넣고 불러오는 방법에 대해 익숙하도록 훈련해야겠다.
for in, for of, forEach 사실 아직 헷갈린다. 다시 한번 봐야곘다.
Math.max.apply(null, array)를 쓰면 array 자체를 넣을수 있다.
Object.values(object)를 하면 value값만 array로 만들어준다.
뭔가 다 알꺼 같다가도 아직도 배울게 많다... 아직 브론즈 레벨이라 갈 레벨이 너무 많다... 지치지 말고 꾸준히 가자 .. 그럼 승리한다.