문제링크 :https://www.acmicpc.net/problem/1181
문제설명
1. N개의 단어가 주어졌을 때 길이가 짧은것부터 출력
2. 길이가 같은 건 사전순으로 출력하고 똑같은 단어는 하나만 출력
알고리즘
1. 비교함수를 정의 해준다
- 길이 순으로 정렬 -> 사전순으로 정렬 -> 똑같은 단어는 하나만 출력.
코드
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 37 | #include<iostream> #include<string> #include<algorithm> #include<vector> using namespace std; bool compare_length(string str, string str2) { //길이가 짧은 순서가 우선 if (str.length() < str2.length()) { return 1; } else if (str.length() > str2.length()) return 0; //길이가 같은경우 else return str < str2;/// 사전 순으로 정렬 } vector<string> v; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { string str; cin >> str; v.push_back(str); } sort(v.begin(), v.end(), compare_length); for (int i = 0; i < n; i++) { if (i < n - 1&&v[i] == v[i + 1] )continue; cout << v[i] << "\n"; } } | cs |
'c++ > 백준' 카테고리의 다른 글
백준 4936번: 섬의 개수 (0) | 2020.05.22 |
---|---|
백준 6603번: 로또 (0) | 2020.05.22 |
백준 3055번 : 탈출 (0) | 2020.05.07 |
백준 1939번 : 중량 제한 (0) | 2020.05.07 |
백준 2211번: 네트워크 복구 (0) | 2020.05.07 |