프로그래밍/C,C++

[C/C++] map 자료구조를 이용한 문자열 문제 해결

노력의천재 2020. 9. 2. 14:35
/* 알파벳의 개수 구하기 */

#include <iostream>
#include <map> // map 자료구조를 사용하기 위한 헤더파일 선언

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false);
	freopen("input.txt","rt",stdin);
	map<char, int> ch; // key-value 형태의 자료구조  
	map<char, int>::iterator it; // map 접근자
	char a[100];
	cin>>a;
	for(int i=0;a[i]!='\0';i++) {
		ch[a[i]]++; // key로 접근하고 value값을 1 증가 
	} 
	for(it=ch.begin();it!=ch.end();it++) {
		cout<<it->first<<" "<<it->second<<"\n"; // it->first : key, it->second : value
	}
}

 

/* 가장 많이 나온 단어를 구하기 */

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false);
	freopen("input.txt","rt",stdin);
	map<string, int> ch; 
	map<string, int>::iterator it; 
	string a,res;
	int n,max=-2147000000;
	cin>>n;
	for(int i=1;i<=n;i++) {
		cin>>a;
		ch[a]++;
	}
	for(it=ch.begin();it!=ch.end();it++) {
		cout<<it->first<<" "<<it->second<<"\n"; // it->first : key, it->second : value
		if(it->second>max) {
			res=it->first;
			max=it->second;
		}
	} 
	cout<<res<<"이(가)"<<max<<"번으로 가장 많이 나온 단어입니다.";
}