백준 1157번 Node.js(자바스크립트) 풀이
❓ 문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
💻 입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
📈 출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
👩🏻 내가 제출한 코드
const input = require("fs").readFileSync("dev/stdin").toString().trim();
const alphabet = input.toUpperCase();
const count = {};
//문자별 빈도수 계산
for(const char of alphabet){
count[char] = (count[char]||0)+1;
}
//가장 높은 빈도수 찾기
let maxCount=0;
let result = '';
for(const char in count){
if(count[char]>maxCount){
maxCount = count[char];
result = char;
}else if(count[char]==maxCount){
result='?';
}
}
console.log(result);
👩🏻💻 풀이
const input = require("fs").readFileSync("dev/stdin").toString().trim();
>> 입력값이 한 개(한 줄)일때
const alphabet = input.toUpperCase();
const count = {};
>> 출력이 대문자로 출력하라는 문제이므로 toUpperCase()로 모든 알파벳을 대문자로 변환
>> const count = { }; 알파벳과 빈도수를 저장할 객체
//문자별 빈도수 계산
for(const char of alphabet){
count[char] = (count[char]||0)+1;
}
>> alphabet 객체 요소마다 반복해서 count 객체에 빈도수를 저장
>> for...of : 객체마다 반복되는 실행문 (https://coding-with-jina.tistory.com/149)
//가장 높은 빈도수 찾기
let maxCount=0;
let result = '';
for(const char in count){
if(count[char]>maxCount){
maxCount = count[char];
result = char;
}else if(count[char]==maxCount){
result='?';
}
}
>> count에 저장된 객체 중 value값을 maxCount와 비교하여 가장 빈도수가 큰 숫자를 maxCount에 저장하고 result에는 그에 해당하는 key값을 저장하도록 한다.
>> 만일 이미 저장된 maxCount와 값이 같은 빈도수가 있다면 문제에 나와있는 것 처럼 ?로 출력하기 위해 result에 ?로 최종 저장한다.
>> for...in : 객체의 모든 열거 가능한 속성을 반복, 주로 객체의 속성(키)을 통해 반복하고자 할 때 사용
🔗문제 링크
https://www.acmicpc.net/problem/1157
'Coding With Jina > Coding Test' 카테고리의 다른 글
[코딩테스트] 백준 2609번 Node.js(자바스크립트) 풀이 (0) | 2024.04.24 |
---|---|
[코딩테스트] 백준 17413번 Node.js(자바스크립트) 풀이 (0) | 2024.04.24 |
[코딩테스트] 백준 11720번 Node.js(자바스크립트) 풀이 (0) | 2024.04.23 |
[코딩테스트] 백준 9046번 Node.js(자바스크립트) 풀이 (0) | 2024.04.22 |
[코딩테스트] 백준 2558번 Node.js(자바스크립트) 풀이 (0) | 2024.04.21 |