알고리즘

[C++] BOJ-1012

Kine00 2019. 10. 11. 03:30

 

문제풀이


1. sort를 사용해서 vector를 정렬.

2. unique를 사용해서 중복이 되는 요소를 맨 뒤로 넘긴다.

3. 맨 뒤로 넘어간 중복되는 요소들을 삭제하고 출력한다.

 

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

bool compare(string &s1, string &s2){
	if(s1.size() == s2.size()){
		return s1 < s2;
	}
	return s1.size() < s2.size();
}

int main(){
	ios_base :: sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int N;
	cin >> N;
	vector <string> str;
	
	for(int i = 0; i<N; i++){
		string tmp;
		cin >> tmp;
		str.push_back(tmp);	
	}
	
	sort(str.begin(),str.end(), compare);
	str.erase(unique(str.begin(),str.end()),str.end());
	
	for(int i = 0; i<str.size(); i++){
		cout << str[i] << "\n";
	}
}