여러번 입력된 경우에는 한번씩만 출력하라는 요구사항이 있기 때문에 set 자료구조를 사용하였습니다.
그리고 set은 자동 정렬이기 때문에 사용자 정의 함수를 이용하기 위해서 set을 vector로 복사하여 사용자 정의 함수와 함께 sort 함수로 정렬하였습니다.
https://www.acmicpc.net/problem/1181
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
set<string> inputSet;
bool cmp(string s1, string s2) {
if(s1.length() < s2.length()) {
return true;
}
if(s1.length() > s2.length()) {
return false;
}
if(s1 < s2) {
return true;
}
return false;
}
int main() {
cin.tie(0); cout.tie(0);
ios::sync_with_stdio(0);
int N;
cin >> N;
while(N>0) {
string input;
cin >> input;
inputSet.insert(input);
N--;
}
vector<string> inputVec(inputSet.size());
copy(inputSet.begin(), inputSet.end(), inputVec.begin());
sort(inputVec.begin(), inputVec.end(), cmp);
for(auto it=inputVec.begin(); it!=inputVec.end(); it++) {
cout << *it << '\n';
}
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 11650. 좌표 정렬하기 (0) | 2020.03.25 |
---|---|
[BOJ] 10814. 나이순 정렬 (0) | 2020.03.25 |
[BOJ] 11866. 요세푸스 문제 0 (0) | 2020.03.25 |
[BOJ] 3052. 나머지 (vector 중복 제거) (0) | 2019.07.03 |
[BOJ] 10989. 수 정렬하기 3 (Counting Sort) (0) | 2019.04.28 |
댓글