본문 바로가기

알고리즘

[C++] BOJ-1012

 

문제풀이


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";
	}
}

'알고리즘' 카테고리의 다른 글

[C++] BOJ-1520  (0) 2019.10.11
[C++] BOJ-1238  (0) 2019.10.11
[C++] BOJ-1012  (0) 2019.10.11
[C++] BOJ-1012  (0) 2019.10.11
[C++] BOJ-7576  (0) 2019.09.09