※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 9046번 문제인 복호화이다.
문제는 아래 링크를 확인하자.

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

 

9046번: 복호화

입력의 T(1 ≤ T ≤ 20)는 테스트 케이스로, 입력 제일 상단에 주어진다. 각각의 테스트 케이스는 한 줄마다 소문자와 공백으로 이루어진 영어 문장이 주어진다. 이 문장의 길이는 적어도 1이상이

www.acmicpc.net

문자열을 줄단위로 읽어오고, 구성하는 각 소문자의 개수를 센 후 가장 많이 사용된 소문자를 찾는 문제이다.

 

문자열을 줄단위로 읽는 것은 getline함수를 이용하여 쉽게 할 수 있다.

 

가장 많이 사용된 소문자가 여럿이라면 '?'를 출력해야함에 유의하자.

 

아래는 제출한 소스코드이다.

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

int cnt[128];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	string s; getline(cin, s);
	while (getline(cin, s)) {
		memset(cnt, 0, sizeof(cnt));
		int mxcnt = -1; char mxchar; bool dupl = 1;
		for (auto& l : s) cnt[l]++;
		for (char i = 'a'; i <= 'z'; i++) {
			if (cnt[i] > mxcnt) {
				mxchar = i;
				mxcnt = cnt[i];
				dupl = 0;
			}
			else if (cnt[i] == mxcnt) dupl = 1;
		}

		if (dupl) cout << '?' << '\n';
		else cout << mxchar << '\n';
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 9047 // C++] 6174  (0) 2022.05.29
[BOJ 4641 // C++] Doubles  (0) 2022.05.29
[BOJ 4589 // C++] Gnome Sequencing  (0) 2022.05.29
[BOJ 5376 // C++] 소수를 분수로  (0) 2022.05.29
[BOJ 5014 // C++] 스타트링크  (0) 2022.05.29

+ Recent posts