CS/Algorithm & Data Structure

[BOJ][C++] 백준 1181 단어 정렬

Yeji Heo 2022. 11. 22. 08:48

1. 중복제거 - find함수 이용하여 push_back할지 말지 미리 결정(요소가 이미 있으면 벡터에 추가하지 않음)

2. 정렬(길이순, 길이가 같으면 사전순) - compare함수를 만들어 sort함수 이용.

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

bool compare(string p1, string p2) {
	if (p1.length() == p2.length()) {
		return p1 < p2;
	}
	return p1.length() < p2.length();
}

int main()
{
	int N;
	cin >> N;
	vector<string> v;

	for (int i = 0; i < N; i++) {
		string str;
		cin>>str;
		if (find(v.begin(), v.end(), str) == v.end()) 
			v.push_back(str);
	}

	sort(v.begin(), v.end(), compare);


	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << "\n";
	}

}