본문 바로가기
🔑 알고리즘/백준 JS

[백준] JS/ 1157 단어 공부

by Tamii 2021. 10. 5.
반응형

내 풀이

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를 나도 이용했는데 이번에는 이용하지 않았다.

인간의(나의) 기억력은 정말 신비하다..

 

 

댓글