백준 1157번

정하윤·2022년 7월 17일
0

맨처음

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));

0개의 댓글