반응형

 

● 문제 접근 과정

출처 : https://stepbystep1.tistory.com/10

1. 대문자와 소문자를 구분하지 않는다.

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

3. 대문자로 어차피 출력하기 때문에 일단 모든 소문자를 대문자로 바꾸자고 생각. (ASCII코드 이용)

4. 바꾼 후 아스키표 코드에 맞게 맞는 인덱스 번호에 카운팅. ex) AABC 입력 arr[65] = 1 -> arr[65] = 2 -> arr[66] = 1 -> arr[67] = 1

5. for문을 통한 가장 출현 빈도가 높은 알파벳을 찾고 인덱스 번호를 저장하자고 생각.

6. 단, 가장 많이 사용된 알파벳이 여러 개 존재한는 경우에는 ?를 출력한다.라는 조건에 맞게 맥스 값이 두번 이상 나오게 된다면, '?' 를 출력.

7. 아니라면 그 인덱스 번호를 문자형으로 변환하여 대문자로 출력.

● 구현

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

int main() {
  int max = 0, cnt = 0, index = 0,
      arr[100] = {
          0,
      };
  string str;
  getline(cin, str);

  for (int i = 0; i <= (str.length() - 1); i++) {
    if (str[i] > 'Z')
      str[i] -= 32;

    arr[(int)str[i]] += 1;
  }

  for (int i = 65; i <= 90; i++) {
    if (max < arr[i]) {
      max = arr[i];
      index = i;
    }
  }
  for (int i = 65; i <= 90; i++) {
    if (max == arr[i])
      cnt++;
  }
  if (cnt > 1)
    cout << "?" << endl;
  else
    cout << (char)index;
  return 0;
}

 

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

 

반응형

+ Recent posts