매일 조금씩

[C++] 백준 1159번: 농구 경기 본문

알고리즘

[C++] 백준 1159번: 농구 경기

mezo 2019. 12. 7. 18:48
728x90
반응형

 

 

 

 

 

 

vector와 알파벳 문자 관련 문제로 많이 도움이 되었다.

vector<char>타입의 vector를 선언하고 크기는 26으로 만든다. 

N명의 학생을 name으로 입력 받으면서 name[0]-97의 식으로 v의 인덱스를 지정하여 넣어진다.

만약 a이면 name[0]이 97이기 때문에 v[int(name[0]-97)]이 v[0]이 된다.

그렇게 되면 a~z의 알파벳으로 시작하는 이름이 나오면 해당알파벳의 0~25에 그 알파벳이 추가되는 형식이다. 

 

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

int main(void){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int N;
	cin >> N;

	vector<vector<char>> v(26, vector<char>(0));	// 26개의 char elemnet를 만듬
	//알파벳의 코드를 사용하기 쉽게 char로 함


	for (int i = 0; i < N; i++) {
		string name;
		cin >> name;
		v[int(name[0] - 97)].push_back('a');
		//a는 코드 97, b는 코드 98
		//만약 name[0]이 a이면 v[int(0)]이되어 v[0]에 a가 들어가게된다.
	}


	//해당 알파벳으로 시작하는 선수들이 5명 이상인 경우
	string result;
	for (int i = 0; i < 26; i++) {
		if (v[i].size() >= 5)
			result += char(i + 97);
	}

	if (result.empty())
		cout << "PREDAJA" << endl;
	else
		cout << result << endl;

	return 0;
}

 

728x90
반응형