728x90
반응형
문제의 세부적인 내용은 다음 링크를 참조한다.
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
문제 : 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력 : 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력 : 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
풀이 :
1. 아스키코드를 활용하여 알파벳 배열을 만든다. (97~122 까지가 A~Z)
2. 알파벳 26자리에 맞춰 모두 0인 배열을 만든다. (알파벳 갯수 카운트 하기 위함)
3. 주어진 문자열의 알파벳이 알파벳 배열에 있으면 해당 자리수의 0인 배열에 카운트를 해준다.
4. 알파벳 갯수 카운트 배열에서 최대값을 구하고, 양 끝에서 탐색하여 동일한 인덱스가 아니면 중복값이므로 ?를 출력하고 아니면 최대수의 알파벳을 출력한다.
const fs = require('fs');
///dev/stdin
let input = fs.readFileSync('/dev/stdin').toString().toUpperCase().split('');
let arr =[];
let arr2 = Array(26).fill(0);
for(let i='A'.charCodeAt();i<='Z'.charCodeAt();i++){
arr.push(String.fromCharCode(i));
}
for(let i =0; i<input.length;i++){
arr2[arr.indexOf(input[i])]++;
}
let cnt =0;
const maxNum = Math.max.apply(null,arr2);
arr2.indexOf(maxNum) == arr2.lastIndexOf(maxNum) ? console.log(arr[arr2.indexOf(maxNum)]) : console.log("?");
728x90
반응형
'CODING-TEST' 카테고리의 다른 글
[백준 문제풀이 JS] 1316번 그룹 단어 체커 (0) | 2022.07.06 |
---|---|
[백준 문제풀이 JS] 1152번 단어의 개수 (0) | 2022.07.04 |
[백준 문제풀이 javascript] 4673번 셀프넘버 (0) | 2022.06.23 |
[백준 문제풀이 javascript] 4344번 평균은 넘겠지 (0) | 2022.06.16 |
[백준 문제풀이 자바java11] 10845번 큐 (0) | 2021.06.08 |