백준 1181_단어정렬 [C++]
본문 바로가기
Algorithm/Python, C++

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

by liveloper jay 2022. 7. 19.

문제

 

 

풀이

 이 문제에서 정렬을 위한 조건은 다음과 같습니다.

 1. 길이가 짧으면 앞쪽으로 정렬된다.

 2. 길이가 같은 경우에는 사전 순서로 해서 빠른 단어가 앞쪽으로 정렬된다.

 

위와 같은 두 가지 조건을 이용하여 a와 b의 길이가 같은 경우에 사전순서대로 정렬( return a<b ) 를 해줍니다. 만약 같지 않은 경우에는 입력받은 a와 b의 길이(a.size(), b.size())를 비교하여 정렬해주면 문제를 쉽게 풀 수 있습니다. 소스코드는 아래와 같습니다.

 

 

소스코드

#include <iostream>
#include <vector> 
#include <algorithm>
using namespace std;
bool comp(string a, string b){   
    if(a.size()==b.size()) return a<b;
    else return a.size()<b.size();
}


int main()
{   vector <string> v;
    string input;
    int num;
    string temp;
    cin>>num;
    while(num--){
        cin >> input;
        v.push_back(input);
    }
    
    sort(v.begin(),v.end(),comp);
    
    for(int i=0; i<v.size(); i++){
        if(v[i]==temp) continue;
        cout << v[i] << "\n";
        temp=v[i];
    }
    return 0;
}

 

 

댓글