본문 바로가기
기타/알고리즘(백준)

[JS] 백준 1157 단어 공부(중복되는 문자열 개수 세는 법)

by ㅇㅇ우너자나나 2022. 10. 13.

 

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

 

문자열에서 특정 문자의 개수를 셀 수 있는지 물어보는 문제이다.

 

 

방법1

let input = require('fs').readFileSync('dev/stdin').toString().toUpperCase();
let countArr = [];


for (let i = 65; i <= 90; i++) {
  let a = String.fromCharCode(i);
  let index = input.indexOf(a);
  let count = 0;
  while (index !== -1) {
    count++;
    index = input.indexOf(a, index + 1);
  }
  countArr.push(count);
}

let result;
const filtering = countArr.filter(i => Math.max(...countArr) === i)
if(filtering.length > 1){
    result = '?'
    console.log(result);
}
if(filtering.length === 1){
    const result = countArr.indexOf(filtering[0])
    console.log(String.fromCharCode(result+65));
}

 

 

방법2

let input = require('fs').readFileSync('dev/stdin').toString().trim().toUpperCase();
const obj = {};
const result = [];

input.split("").forEach((alphabet) => {
    if(alphabet in obj) obj[alphabet] += 1;
    else obj[alphabet] = 1;
})
const max = Math.max(...Object.values(obj))
for(const key in obj){
    if(obj[key] === max) result.push(key);
}
if(result.length>1){
    console.log('?')
} else {
    console.log(result[0])
}

 

 

비고

https://deeplify.dev/front-end/js/count-characters-in-string

 

[Js/자바스크립트] 문자열의 특정 문자 개수 세는 방법

Javascript 문자열에서 특정 문자의 개수를 세는 방법에 대해서 소개합니다.

deeplify.dev

첫번째 풀이는 위 방법 참조했다.