Baekjoon/단계별로 풀어보기

[BOJ/백준] 1157번 단어 공부 C++ 문제 풀이

728x90

단계별로 풀어보기 - 문자열 - [5단계] 1157번

문제

문제 링크 : www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

입력 복사 : 

> 예제 입력 1

Mississipi

> 예제 입력 2

zZa

> 예제 입력 3

z

> 예제 입력 4

baaa

 

CODE

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

int main() {
	string str;
	int alpha[26] = { 0 };
	int len, max = 0, maxalpha = 0, multialpha = 0;
	getline(cin, str, '\n');
	len = str.length();

	for (int i = 'A'; i <= 'Z'; i++) {
		for (int j = 0; j < len; j++) {
			if (str.at(j) == i) {
				alpha[i - 65]++;
			}
		}
	}
	
	for (int i = 'a'; i <= 'z'; i++) {
		for (int j = 0; j < len; j++) {
			if (str.at(j) == i) {
				alpha[i - 97]++;
			}
		}
	}

	for (int i = 'A'; i <= 'Z'; i++) {
		if (max < alpha[i - 65]) {
			max = alpha[i - 65];
			maxalpha = i;
		}
	}

	for (int i = 'A'; i <= 'Z'; i++) {
		if (max == alpha[i - 65])
			multialpha++;
	}
		

	if (multialpha == 1)
		printf("%c\n", maxalpha);
	else
		printf("?\n");
}

 

결과

728x90