https://www.acmicpc.net/problem/1181
[소스코드]
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// [baekjoon] 1181번 - 단어 정렬
// 2023.01.04
bool compare(string a, string b) {
if (a.length() == b.length()) { // 길이가 같으면
return a < b; // b가 사전순으로 a 보다 다음 순서가 되게 정렬 (= 사전 순으로 정렬)
}
else { // 길이가 다르면
return a.length() < b.length(); // b의 길이가 더 길도록 정렬 (=길이가 짧은 것이 앞으로)
}
}
int main() {
string str[20001];
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 (str[i] == str[i - 1]) { // 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력
continue;
}
cout << str[i] << "\n";
}
return 0;
}
c++의 sort를 이용하여 정렬하는 경우, 세번째 인자에 정렬 조건을 사용하여 정렬하는 문제입니다.
sort 함수에 대해서는 아래 게시글을 참고해 주세요.
'학습 정리 > 👨💻 PS Study' 카테고리의 다른 글
[C++] 백준 2108번 - 통계학 (0) | 2023.01.22 |
---|---|
[C++] 백준 11650번 - 좌표 정렬하기 (0) | 2023.01.22 |
[C++] 백준 25305번 - 커트라인 (0) | 2023.01.04 |
[C++] 백준 2563번 - 색종이 (0) | 2023.01.04 |
[C++] 백준 15552번 - 빠른 A+B (2) | 2023.01.04 |