반응형

문제 링크

 

1157번: 단어 공부

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

www.acmicpc.net

 

풀이 )

  문자열을 입력 받을 때 소문자의 경우 아스키코드값 'a'를 빼주고 대문자의 경우 'A'를 빼주어 해당 배열의 수를 증가 시킨다.

  먼저 각 배열을 순회하면서 가장 많이 쓰인 알파벳을 찾고 다음번 순회하면서 가장 많이 쓰인 알파벳이 2개 이상인지 확인했다.

 

#include <cstdio>
using namespace std;

int main(void)
{
  int cnt[26] = {0, };
  char word[1000002] = "";
  scanf("%s", word);
  int i = 0;
  while(word[i]){
    if(word[i] < 'a')
      cnt[word[i]-'A']++;
    else
      cnt[word[i]-'a']++;
    i++;
  }
  int max = 0, max_idx = 0, flag = 0;
  for(int i = 0; i < 26; ++i){
    if(cnt[i] > max){
      max = cnt[i];
      max_idx = i;
    }
  }
  for(int i = 0; i < 26; ++i){
    if(i == max_idx)
      continue;
    else
      if(cnt[i] == max)
        flag++;
  }
  if(flag)
    printf("?\n");
  else
    printf("%c\n", 'A'+max_idx);
  return 0;
}
반응형

'문제풀이 > 백준' 카테고리의 다른 글

[C++] 백준 - 2468 : 안전 영역  (0) 2020.03.24
[C++] 백준 - 10451 : 순열 사이클  (0) 2020.03.22
[C++] 백준 - 1019 : 책 페이지  (0) 2020.03.22
[C++] 백준 - 1966 : 프린터 큐  (0) 2020.03.20
[C++] 백준 - 2164 : 카드2  (0) 2020.03.20

+ Recent posts