문제링크 백준단어정렬
string형태의 문자열을 입력받고 문자열을 길이가 짧은 순으로 정렬하는 문제이다.
길이가 같을 경우는 사전 순으로 정렬한다.
벡터를 이용해 데이터 저장하고, sort 함수를 이용해 정렬하였다.
compare 함수를 정의하였는데, 길이가 짧은 순으로, 길이가 같으면 사전에 앞에 나온 순으로 정렬하는 함수이다.
중복 제거하는 방법은 바로 앞에 있는 문자열과 같다면 출력하지 않게끔 했다.
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool compare(string a, string b) {
if (a.size() == b.size())
return a < b;
else
return a.size() < b.size();
}
int main() {
vector <string> a;
string temp;
int N;
cin >> N;
for (int i = 0; i < N; i++) {
string word;
cin >> word;
a.push_back(word);
}
sort(a.begin(), a.end(), compare);
for (int i = 0; i < N; i++) {
if (i != 0) {
if (a[i] == a[i - 1]) continue;
}
cout << a[i] << '\n'; //중복제거 방법 1
/* if (temp == a[i])continue;
cout << a[i] << '\n';
temp = a[i];
중복제거 방법 2
*/
}
return 0;
}