티스토리 뷰

PS/BOJ C++

1157번 - 단어 공부

zpqmdh 2021. 8. 27. 18:09

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

#include <iostream>

#include <string>

 

using namespace std;

int main() {

  string str; //입력받는 문자열

  cin >> str;

 

  for(int i=0; i<str.length(); i++)

    str[i] = tolower(str[i]); //모두 소문자로 변환

 

  int cnt[26] = {0, }; //알파벳 빈도수 저장

  string alphabet = "abcdefghijklmnopqrstuvwxyz";

 

  for(int i=0; i<str.length(); i++)

  {

    for(int j=0; j<26; j++)

    {

      if(str[i] == alphabet[j])

        cnt[j]++;

    }

  }

 

  int max = 0; //cnt 배열의 최댓값

  int maxidx = 0; //cnt 배열의 최댓값이 있는 index

 

  for(int i=0; i<26; i++)

  {

    if(max < cnt[i])

    {

      max = cnt[i];

      maxidx = i;

    }

  }

  for(int j=0; j<26; j++)

  {

    if(cnt[j] == max)

    {

      if(maxidx != j)

      {

        cout << "?" << endl;

        return 0;

      }

    }

  }

  char result = toupper(alphabet[maxidx]);

  cout << result << endl;

  return 0;

}

'PS > BOJ C++' 카테고리의 다른 글

1676번 - 팩토리얼 0의 개수  (0) 2021.09.05
2798번 - 블랙잭  (1) 2021.08.29
10809번 - 알파벳 찾기  (0) 2021.08.27
4344번 - 평균은 넘겠지  (0) 2021.08.25
1929번 - 소수 구하기  (0) 2021.08.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함