Algorithm/Python, C++
백준 1181_단어정렬 [C++]
liveloper jay
2022. 7. 19. 16:16
문제
풀이
이 문제에서 정렬을 위한 조건은 다음과 같습니다.
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;
}