티스토리 뷰

c++에서 map을 사용해 key와 value를 저장해서 key와 value를 출력하는 프로그램을 통해 

map사용법을 설명하고자 한다.

 

알파벳을 key값으로 입력받아 입력된 알파벳 각각의 개수를 구하기

입력값: abcbbbcccaaabd

결과

코드

#include <iostream>
#include <fstream>
#include <map>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	ifstream cin;
	cin.open("input.txt");
	map<char, int> ch;
	map<char, int>::iterator it;
	char a[100];
	cin >> a;
	for(int i=0; a[i]!='\0'; i++){
		ch[a[i]]++;
	}
	
	for(it=ch.begin(); it!=ch.end(); it++){
		cout << it->first << ' ' << it->second << "\n";
	}
	 
	return 0;
}

 

여러 단어를 key값으로 입력받아 입력된 단어중 가장 많이 입력된 단어와 그 개수 출력하기

입력값

8
cat
book
dog
cat
dog
book
book
dog

 

결과

코드

#include <iostream>
#include <fstream>
#include <map>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	ifstream cin;
	cin.open("input.txt");
	map<string, int> ch;
	map<string, int>::iterator it;
	string a;
	int n;
	cin >> n;
	for(int i=1; i<=n; i++){
		cin >> a;
		ch[a]++;	
	}	
	int max=0;
	string res;
	for(it=ch.begin(); it!=ch.end(); it++){
		if(it->second>max) {
			max=it->second;
			res=it->first;
		}
	}
	cout << res << ": " << max << "\n";  
	return 0;
}

 

** 메모

- 일반적으로 scanf와 printf보다 cin, cout이 더 느린특징을 가지고 있는데 ios_base::sync_with_stdio(false)를 적으면 더 빠르게 사용할 수 있음

- endl 보다 "\n"이 더 빠르다.

- map을 순회할 때에는 iterator를 사용한다. for문에서 iterator의 begin()과 end()를 통해 map을 탐색할 수 있다. end()함수는 map의 마지막 칸보다 한칸 더 뒤에 있는 칸을 의미한다.

 

'lecture > algorithm - c++' 카테고리의 다른 글

[c++] 최대부분 증가수열  (0) 2021.02.04
[c++] 동적계획법(DP)  (0) 2021.02.03
[c++] 네임스페이스(namespace), using namespace std  (0) 2021.01.31
[c++] 라이언킹 심바(BFS)  (0) 2021.01.30
[c++] 토마토(BFS)  (0) 2021.01.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함