문제 설명
문제 풀이
2만개의 단어면 정렬 후 출력을 해도 문제가 없을 것이라고 생각했다 (NlogN가 2억 미만이므로)
중복을 따로 제거하기 귀찮아서 set을 이용하였고 set의 정렬방법을 따로 정의해주었다.
이 때 set은 operator를 overloading할 때 const를 쓰지 않으면 컴파일 오류가 나는데 원인은 아래 링크에서 설명하겠다.
https://readble-ko.tistory.com/185
코 드
#include <iostream>
#include <set>
using namespace std ;
struct cmp
{
bool operator()(string a, string b) const {
if(a.length() == b.length()) return a < b ;
return a.length() < b.length() ;
}
};
int main()
{
int N ;
cin >> N ;
set<string, cmp> s ;
string str ;
for(int i = 0 ; i < N ; i++) {
cin >> str ;
s.insert(str) ;
}
for(auto str : s)
cout << str << "\n" ;
}
느낀점: 새롭게 set에 대해서 공부하게 되는 시간이었다.
링크: https://www.acmicpc.net/problem/1181
'Problem Solving > 백준' 카테고리의 다른 글
[백준/C++] 9935번 문자열 폭발 풀이 (0) | 2023.11.30 |
---|---|
[백준/C++] 14003번 가장 긴 증가하는 부분 수열 5 풀이 (0) | 2023.11.27 |
[백준/C++] 11140번 LOL 해설 (0) | 2023.07.07 |
[백준/C++] 2252번 줄 세우기 (Topology sort) (0) | 2023.04.12 |
[백준/C++] 1525번 퍼즐 풀이 (0) | 2023.04.03 |