CS/Algorithm 문제

[BaekJoon] 백준 13414번 수강신청

 

[BaekJoon] 백준 13414번 수강신청

 

문제: https://www.acmicpc.net/problem/13414

 

 

내코드

 

- 처음에 list를 사용해서 풀었더니 시간초과가 났다.

- vector로 학번들을 저장해두고, set으로 중복여부를 판단한다.

 

#include <string.h>
#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	int maxP, click; cin >> maxP >> click;
	vector<string> li;
	vector<string> result;
	set<string> s;

	for (int i=0;i < click; i++) {
		string tmp; cin >> tmp;
		li.push_back(tmp);
	}
	for (int i = click - 1; i >= 0; --i) {
		string tmp = li[i];
		if (s.find(tmp) == s.end()) {
			s.insert(tmp);
			result.push_back(tmp);
		}
	}
	int size = result.size();
	for (int i = size - 1; i >= size - maxP && i >= 0; --i)
		cout << result[i] << "\n";
	return 0;
}

 

참고

728x90
반응형