문제
풀이
이 문제에서 정렬을 위한 조건은 다음과 같습니다.
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;
}
'Algorithm > Python, C++' 카테고리의 다른 글
[프로그래머스] 로또 최고 순위와 최저 순위 (python) (0) | 2022.08.15 |
---|---|
[프로그래머스] 완주하지 못한 선수 (python) (0) | 2022.08.09 |
백준 11651_좌표 정렬하기 2 [C++] (0) | 2022.07.18 |
백준 11650_좌표 정렬하기 [C++] (0) | 2022.07.16 |
백준 1427_소트인사이드 [C++] (0) | 2022.07.15 |
댓글