1181_단어 정렬
링크
https://www.acmicpc.net/problem/1181
풀이
sort() 함수의 세 번째 인자에 들어갈 compare 함수의 정의가 필요합니다.
첫 번째 조건은 길이가 짧은 것부터, 이 조건은 compare 함수의 인자가 (string a, string b)라고 했을 때, if(a.size() != b.size()) return a.size() < b.size(); 해주면 됩니다.
두 번째 조건은 길이가 같으면 사전 순으로, 이 조건은 return a < b; 해주면 됩니다.
string이 사전순으로 처리해 주기 때문입니다.
마지막으로 중복 제거입니다.
저는 이전에 출력한 문자열을 저장해둔 다음, 출력할 때 비교하게 해서 출력시에 처리하기로 했습니다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <cstdio> #include <iostream> #include <algorithm> #include <string> using namespace std;
string str[20000]; string joong;
bool compare(string a, string b){ if (a.size() != b.size()){ return a.size() < b.size(); }
return a < b; }
int main(){ int n;
cin >> n;
for (int i = 0; i < n; ++i){ cin >> str[i]; }
sort(str, str + n, compare);
for (int i = 0; i < n; ++i){ if (joong != str[i]) cout << str[i] << "\n"; joong = str[i]; }
return 0; } |
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ][sort] 11651 좌표 정렬하기 2 (0) | 2018.07.24 |
---|---|
[백준 BOJ][sort] 11650 좌표 정렬하기 (0) | 2018.07.24 |
[백준 BOJ][sort] 11931 수 정렬하기 4 (0) | 2018.07.24 |
[백준 BOJ][sort] 10989 수 정렬하기 3 (1) | 2018.07.24 |
[백준 BOJ][sort] 2750 수 정렬하기 (0) | 2018.07.24 |