Post List

[BOJ] 백준 1181 단어 정렬

[BOJ] 백준 1181 단어 정렬


이 문제의 정렬 조건은 다음과 같습니다.
  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로
조건대로 따라가기 위해 단어의 길이와 문자 쌍을 정렬하면 되는 문제 입니다.
하지만 중복 단어는 출력하지 않습니다. 정렬한 후 벡터에는 중복되는 단어들은 그들 끼리 모여있으므로, 바로 뒤의 단어와 같은 단어가 나왔다면 출력을 skip 하면 됩니다.

소스 코드 :

#include 
#include 
#include 
#include 
using namespace std;

int main() {
 ios_base::sync_with_stdio(0);
 cin.tie(0);

 int n;
 cin >> n;
 cin.ignore();
    // 단어의 길이와 단어를 저장할 벡터 선언
 vector< pair> v;
 for (int i = 0; i < n; i++) {
  string s;
  cin >> s;
  cin.ignore();
  v.push_back(pair(s.length(), s));

 }
    // 정렬 수행 하면, 단어의 길이순으로 정렬되고 같은단어는 뭉쳐있게 됨.
 sort(v.begin(), v.end());
 for (int i = 0; i < n - 1; i++) {
        // 중복단어는 출력하지 않음.
  if (v[i].second == v[i + 1].second) continue;
  cout << v[i].second << endl;
 }
 cout << v[n - 1].second << endl;
}

댓글