본문 바로가기
Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 1157 : 단어 공부

by hoiiiii 2022. 2. 26.

문제 : https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

 

Sol ) 

1.  길이 26의 cnt 배열 선언 및 0으로 초기화

2. 문자열을 돌면서 cnt [문자 - "A"의 아스키코드] 값을 1씩 증가 ( cnt [0] = a의 횟수 )

3. cnt배열의 최댓값( 가장 많이 출력된 문자의 횟수)을 저장

4. 만약 최댓값이 두 개 이상의 문자일 경우 "?" 출력

5. 최대값이 한 개일 경우 해당 문자 출력

 

 

소스코드 )

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().toUpperCase().split('\n');

const cnt_arr = new Array(26).fill(0);
for (let i = 0 ; i<input[0].length ; i++){
  cnt_arr[input[0][i].charCodeAt(0) - "A".charCodeAt(0)]++;
}
let max_num = Math.max(...cnt_arr);
let result;
for (let i = 0 ; i<cnt_arr.length ; i++){
  if (cnt_arr[i] === max_num){
    if (result !== undefined){
      result = "?"
      break;
    }
    result = String.fromCharCode(i+"A".charCodeAt(0));
  }
}
console.log(result);

 

댓글