본문 바로가기
알고리즘 문제/BOJ

[BOJ][1181] 단어 정렬

by 햄과함께 2019. 1. 6.
320x100

문제 : https://www.acmicpc.net/problem/1181




문제 조건 중 단어가 여러 번 입력된 경우 한 번씩만 출력을 하라는 항목이 있다.

그래서 중복을 제거하기 위해 set을 이용해서 풀었다.

그리고 set의 정렬 조건을 수정하였다.


정렬 조건은

만약 비교하는 문자열 2개의 길이가 다르다면 앞에 있는 문자열이 길이가 더 짧은 경우 true, 앞에 있는 문자열이 길이가 더 긴 경우 false를 반환.

문자열 2개의 길이가 같다면 사전순 정렬로 되어있으면(앞에 있는 문자열 < 뒤에 있는 문자열) true, 아닌 경우 false를 반환한다.


C++ set.insert 의 시간복잡도는 O(log(set.size()) 이므로, 

총 시간복잡도는 대략 O(NlogN)




소스코드 : https://gist.github.com/fpdjsns/65ecf5c52cb88b6f1b787161b7b3814c




참고

C++ Set With Custom Comparator

std::set::insert - cppreference.com

320x100

'알고리즘 문제 > BOJ' 카테고리의 다른 글

[BOJ][11585] 속타는 저녁 메뉴  (0) 2020.04.08
[BOJ][2003] 수들의 합 2  (0) 2019.02.16
[BOJ][1504] 특정한 최단 경로  (0) 2019.01.27
[BOJ][1516] 게임 개발  (0) 2019.01.20
[BOJ][3665] 최종 순위  (0) 2019.01.19

댓글