본문 바로가기
백준 풀이

[백준/BOJ] - 1157번 c++ 풀이

by 반오십 코린이 2022. 11. 2.
728x90


알아야 할 것

 

1. 알파벳의 아스키 코드 정보 

65~90 A~Z

97~122 a~z

 

2. 알파벳은 대소문자 구분없이 26가지가 있으므로 

어떤 문자가 나오는지에 따라 그 cnt를 저장시켜주는 num 배열 생성

 

3. max값 계속해서 갱신

 

4. 마지막 num 배열을 탐색하며 해당 index 배열 값이 max 값과 같은 경우를 찾아 그 경우가 2 이상일 경우

가장 많이 사용된 알파벳이 여러 개 존재하는 경우이므로 ? 출력

아닐 경우 가장 많이 사용된 알파벳 정상 출력

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

int main()
{
	string str;
	cin >> str;

	int max = -1;	
	int temp1 = 0;
	
	int cnt = 0;
	int num[26] = {0,};
	//65 ~ 90 A~Z
	//97~ 122 a~z
	for (int i = 0; i < str.length(); i++){
		if (str[i] < 97) //대문자
			num[str[i] - 65]++;
		else //소문자
			num[str[i] - 97]++;
	}

	for (int j = 0; j < 26; j++) {
		if (num[j] > max) {
			max = num[j];
			temp1 = j;
		}
	}	
	for (int i = 0; i < 26; i++) {
		if (max == num[i])
			cnt++;
	}	

	if(cnt > 1)// 카운트 값이 같은 경우
		cout << "?";
	else // 겹치지 않는 경우
		cout << char(65+temp1);

}

 

728x90

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

[백준/BOJ] - 2908번 c++ 풀이  (0) 2022.11.10
[백준/BOJ] - 2675번 c++ 풀이  (0) 2022.11.09
[백준/BOJ] - 1546번 c++ 풀이  (0) 2022.11.08
[백준/BOJ] - 1152번 c++ 풀이  (0) 2022.11.07
[백준/Python3] 2738번 - 행렬 덧셈  (0) 2022.07.24