본문 바로가기
코딩테스트!(프로그래머스 & 백준)/백준 - C++

백준 - 단어 공부

by Lee_story_.. 2022. 6. 22.
728x90

오늘은 쉬어가는 백준 문제!

 

 

1157번: 단어 공부

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

www.acmicpc.net

문제

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

입력

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

출력

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

 

Mississipi  >> ?

zZa >> ?

z  >> Z

baaa >> Z

 

라고 하네요

 

 

막 엄청난 방법이 사용되는건 아닌것 같네요

아마

 

1. 문자열을 받아 대문자든 소문자든 통일시켜준다

2. 알파벳을 알려줄 26칸짜리 리스트를 생성하고 해당 알파벳 출현시 +1

3. 마지막으로 최다빈도를 계산

4. 그 알파벳을 대문자로 출력!

 

 

for문으로 분별하는 문제가 될 것 같습니다!

 

 
 
먼저 문자열을 받아서 소문자로 만든후 알파벳리스트에 넣어줍시다! (배열 초기화 꼭!)
 
    string memo;
    int list[26]={};
    
    cin>>memo;
    
    for(int i=0;i<memo.length();i++){
         int count=int(tolower(memo[i]));
         list[count-97]+=1;
    }

 

 

다음은 빈도수를 계산하는데 여기서 그냥 구하는게 아니라

최다 빈도수의 알파벳이 2개가 있으면 ? 출력하라네요.....

if 로 최다빈도가 같을 경우는 바로 ? 로 바꾸고 

같지 않고 크다면 카운트를 바꿔주고 출력값도 현재 배열위치+65(A) , 대문자로 만들어 줍시다.

    int maxcount=0;
    char answer='?';
    for(int i=0;i<26;i++){
        if(maxcount==list[i]){
            answer='?';
            continue;
        }
        else if(maxcount<list[i]){
             maxcount=list[i];
             answer=char(i+65);
        }
    }

 

이제 answer값을 출력하면 끝!

 

 

*all

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;


int main(){
    string memo;
    int list[26]={};
    
    cin>>memo;
    
    for(int i=0;i<memo.length();i++){
         int count=int(tolower(memo[i]));
         list[count-97]+=1;
    }
    
    
    int maxcount=0;
    char answer='?';
    for(int i=0;i<26;i++){
        if(maxcount==list[i]){
            answer='?';
            continue;
        }
        else if(maxcount<list[i]){
             maxcount=list[i];
             answer=char(i+65);
        }
    }
    
    
    cout<<(answer)<<endl;
   
    return 0;
}

 

 

틀린 점이 있다면 댓 달아주세요!

댓글