문제
1181행: 단어 정렬
단어 수 N은 첫 번째 줄에 제공됩니다.
(1 ≤ N ≤ 20,000) 두 번째 줄부터 N 줄까지 알파벳 소문자로 구성된 단어를 한 줄에 한 번씩 지정한다.
지정된 문자열의 길이는 50을 초과할 수 없습니다.
www.acmicpc.net
설명
정렬 기능이 오름차순/내림차순으로만 정렬되는 줄 알았는데, 이를 해결하면서 맞춤 옵션도 추가할 수 있음을 알게 되었습니다.
보통 Compare라는 함수를 만들어서 처리한다고 하는데 이 문제로 한번 해봤습니다.
정렬하려는 두 문자열의 길이가 같으면 문자열을 반환하십시오.
그렇지 않은 경우 길이를 반환하는 형태로 구현됩니다.
#include <iostream>
#include <vector>
using namespace std;
bool compare(string a, string b) {
if (a.length() == b.length())
return a < b;
return a.length() < b.length();
}
int main() {
int N;
cin >> N;
vector<string> v(N);
for (int i = 0; i < N; i++) {
cin >> v(i);
}
sort(v.begin(), v.end(), compare);
for (int i = 1; i <= N; i++) {
if (v(i - 1) == v(i)) continue;
else cout << v(i - 1) << "\n";
}
return 0;
}