반응형
내 풀이
const fs = require('fs');
let input = (fs.readFileSync('./test') + '').toString().trim();
let inputArr = input.split('');
let ans = {};
inputArr.forEach((i) => {
let ui = i.toUpperCase();
if (ans[ui]) ans[ui] += 1;
else ans[ui] = 1;
});
let a = Object.keys(ans).sort((a, b) => {
return ans[b] - ans[a];
});
if (a.length === 1) console.log(a[0]);
else {
if (ans[a[0]] !== ans[a[1]]) console.log(a[0]);
else console.log('?');
}
1. 문자를 배열로 변경 동시에 upperCase
2. 문자를 key 값으로 가진 ans dictionary 생성
3. 최대값을 찾고 두 값이 같으면 ? 아니면 그 값
다른 풀이
const fs = require('fs');
let input = (fs.readFileSync('./test') + '').toString().toLowerCase();
let inputArr = input.split('');
const alpha = new Array(26).fill(0);
inputArr.forEach((i) => (alpha[i.charCodeAt() - 97] += 1));
const max = Math.max(...alpha);
const index = alpha.indexOf(max);
let isSame = false;
for (let i = 0; i < 26; i++) {
if (alpha[i] === max && index !== i) {
isSame = true;
break;
}
}
console.log(isSame ? '?' : String.fromCharCode(index + 65));
Ascii code를 이용한 경우
분명 저분에는 ascii code를 나도 이용했는데 이번에는 이용하지 않았다.
인간의(나의) 기억력은 정말 신비하다..
'🔑 알고리즘 > 백준 JS' 카테고리의 다른 글
[백준] node.js / 1158 요세푸스 문제 (2) | 2021.10.12 |
---|---|
[백준] JS/ 11399 ATM (0) | 2021.10.06 |
[백준] JS/ 10808 알파벳 개수 (0) | 2021.09.30 |
[백준] JS/ 4949 균형잡힌 세상 (0) | 2021.09.29 |
[백준] JS/ 10798 세로읽기 (0) | 2021.09.29 |
댓글