단어 정렬 - 백준 1181
2022. 2. 16. 10:20ㆍ프로그래머스
문제 링크
문자열을 정렬하는 문제입니다.
문자열을 길이순으로 정렬하되, 길이가 같은 경우 사전순으로 정렬하고 같은 단어가 있는 경우 한 번만 출력합니다.
소스코드
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string s[20000];
bool sort1(string a, string b) {
if (a.size() < b.size())
return true;
else if (a.size() > b.size())
return false;
else {
return a < b;
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> s[i];
}
sort(s, s+N, sort1);
for (int i = 0; i < N; i++) {
if (s[i] == s[i + 1]) continue;
cout << s[i] << endl;
}
cout << endl;
return 0;
}
sort() 함수에서 첫 번째 인자로는 배열의 시작점 주소,
두 번째로는 배열의 마지막 주소를 적어주면 됩니다.
기본적으로 sort 함수는 오름차순 정렬을 수행하지만 3번째 인자로 우리가 정렬을 어떻게 수행할 것인지 매서드를 통해 조정할 수 있습니다.
위 sort1() 함수를 통해 문제의 조건에 맞게 정렬을 수행합니다.
'왼쪽에 있는 것(= a)이 오른쪽에 있는 것(= b) 보다' 로 기준을 삼습니다.
즉 위의 경우 왼쪽에 있는 a 가 오른쪽에 있는 b보다 길이가 작도록 정렬한다는 의미입니다
또 길이가 같을 경우에는 a < b : 사전순으로 정렬하도록 만듭니다.
'프로그래머스' 카테고리의 다른 글
[전화번호 목록] - 42577 (0) | 2022.02.18 |
---|---|
시리얼 번호 - 백준 1431 (0) | 2022.02.16 |
5. 병합 정렬( merge sort) (0) | 2022.02.13 |
4. 퀵 정렬 (Quick Sort) (0) | 2022.02.01 |
3. 삽입 정렬(Insertion Sort) (0) | 2022.01.31 |