Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

main

[백준 - 1157번] 단어 공부 본문

Algorithm

[백준 - 1157번] 단어 공부

1984 2022. 1. 21. 21:10
  • map 사용법 익히기
  • iterator
#include <iostream>
#include <algorithm>
#include <string>
#include <map>

using namespace std;


int main(void)
{
	string str;
	char c;
	map<char, int> m;
	map<char, int> m2;

	getline(cin, str);

	//map에 insert, value 값
	for (int i = 0; i < str.size(); i++)
	{
		//대문자로 바꾸기 (대문자와 소문자를 구분하지 않음)
		str[i] = toupper(str[i]);
		c = str[i];
		auto item = m.find(c);
		if (item != m.end())
		{	//key 있을 때
			m[c] ++;//value 값 증가
		}
		else
		{	//key 없을 때
			m.insert(std::make_pair(c, 1));// insert (key,value) pair
		}
	}
	//iterator ;포인터랑 비슷함..
	std::map<char, int>::iterator best
		= std::max_element(m.begin(), m.end(),
			[](const pair<char, int>& p1, const pair<char, int>& p2) {return p1.second < p2.second; });

	// 가장 많이 사용된 알파벳이 여러 개 존재하는 경우
	int count = 0;
	int max_num = best->second;
	map<char, int>::iterator it;
	for (it = m.begin(); it != m.end(); it++)
	{
		if (it->second == max_num) count++;
	}
	if (count >= 2) cout << "?";
	else
	{
		cout << best->first;
	}

}

 

[참고 자료]

https://blockdmask.tistory.com/87

https://www.delftstack.com/ko/howto/cpp/map-find-in-cpp/

https://chp747.tistory.com/62

https://stackoverflow.com/questions/2152986/what-is-the-most-effective-way-to-get-the-index-of-an-iterator-of-an-stdvector

https://dar0m.tistory.com/98

728x90

'Algorithm' 카테고리의 다른 글

[백준 - 2577번] 숫자의 개수  (0) 2022.01.22
[백준 - 2562번] 최댓값  (0) 2022.01.22
[백준 - 1152번] 단어의 개수  (0) 2022.01.21
[백준 - 1008번] A/B  (0) 2022.01.21
[백준 - 1929번] 소수 구하기  (0) 2022.01.21
Comments