[백준] 1181 – 단어 정렬

쉬운 목차

문제

#1181 단어 정렬(acmicpc.net)

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