[백준/node.js] 1157 단어 공부

ssamu·2023년 10월 15일
0
post-thumbnail

문제:

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

예제 입력 1:

Mississipi

예제 출력1:

?

예제 입력 2:

zZa

예제 출력 2:

Z


코드:

let input = require("fs").readFileSync(0).toString().toLowerCase();

const result = Array(26).fill(0); 
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

for (let i = 0; i < input.length; i++) { 
  result[input.charCodeAt(i) - 97] ++; // input 내 알파벳 위치 찾아서 result에 할당
}

const max = Math.max(...result); // 찾은 값중에 최대치 찾기 
const index = result.indexOf(max); // result에서 max값 인덱스 찾기 

let isSame = false;

// 가장 많이 사용된 알파벳 값(max)을 사용해 max값과 동일한 또 다른 알파벳이 있는지 확인 
// 예시: m이 4번으로 max인데, i도 4번이면 for문 break
for (let j = 0; j < 26; j++) {  
  if (result[j] === max && index != j) { 
    isSame = true;
    break;
  }
}

console.log(isSame ? "?" : String.fromCharCode(index + 65));

0개의 댓글