문제설명
소스코드
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(string a, string b)
{
if (a.length() != b.length()) return a.length() < b.length();
else return a < b;
}
int main()
{
ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제
cin.tie(NULL); //입력과 출력 연결 끊기
int N;
cin >> N;
string* arr = new string[N];
for (int i = 0; i < N; ++i) cin >> arr[i];
sort(arr, arr + N, compare);
for (int i = 0; i < N; ++i)
{
if (arr[i] == arr[i + 1]) continue;
else cout << arr[i] << '\n';
}
}
설명
- 기본적으로 algorithm 라이브러리의 sort() 함수를 사용한다.
- sort() 함수의 세 번째 매개값으로 compare() 함수를 넘긴다.
- 길이가 같지 않으면 길이가 짧은 순으로 정렬하고, 길이가 같다면 사전순으로 정렬한다.
- 표준 스트림 동기화 해제, 입출력 연결 끊기, endl 대신 '\n'사용 -> 시간초과 방지
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 14단계 - 14425번 문제 (문자열 집합) (0) | 2023.07.21 |
---|---|
[C++] 백준 14단계 - 10815번 문제 (숫자 카드) (0) | 2023.07.20 |
[C++] 백준 13단계 - 18870번 문제 (좌표 압축) (0) | 2023.07.19 |
[C++] 백준 13단계 - 11651번 문제 (좌표 정렬하기 2) (0) | 2023.07.19 |
[C++] 백준 13단계 - 10814번 문제 (나이순 정렬) (0) | 2023.07.18 |