[백준 1157번] 단어 공부 (Node,JavaScript)

박동현·2022년 5월 15일
0

백준문제풀이

목록 보기
1/11
post-thumbnail

출처

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

문제

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

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

문제풀이

const input = require("fs").readFileSync("dev/stdin").toString().trim();
const word = input.toUpperCase().split("");
const abc = [...new Set(word)];
var count = 0;
var answer;
for (let i = 0; i < abc.length; i++) {
  var temp = 0;
  for (let j = 0; j < word.length; j++) {
    if (abc[i] == word[j]) temp++;
    if (j == word.length - 1 && count <= temp) {
      if (count == temp) {
        answer = "?";
        break;
      } else {
        count = temp;
        answer = abc[i];
      }
    }
  }
}

console.log(answer);

먼저 input 값을 대문자 혹은 소문자로 변환시켜 word 라는 변수에 배열의 형태로 저장하였다.
저장한 값을 중복값을 제외시키기 위해 Set 자료형을 사용하여 abc 라는 이름으로 저장시켜주자.
그후 이중 반복문을 통해 각 단어의 개수를 세어 먼저 temp 변수에 저장시켜준다.
대상 단어의 개수를 끝까지 다 세었고, 개수(temp) 가 count 보다 크다면 count 값을 temp 로 변경시켜주고 answer 을 그때의 값으로 저장한다.
만약 count 와 temp 의 수가 같다면 문자열 내에 같은 수의 단어가 있는 것이므로 ? 를 저장해 주었다.
끝까지 반복 하면 가장 많이 사용된 단어가 answer 에 저장된다.
매우 무식한 방법으로 푼것 같다.

profile
좋은 개발자가 되고싶은 전공자

0개의 댓글