[백준] IF문 좀 대신 써줘

2022. 9. 27. 21:30TIL💡/Algorithms

https://www.acmicpc.net/problem/19637

 

19637번: IF문 좀 대신 써줘

첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭

www.acmicpc.net

테스트케이스를 보면, 중복된 숫자가 들어와서 multimap을 써서 전투력에 해당하는 여러 개의 칭호를 저장해야하나 순간 고민했다.

그런데 문제를 다시 한 번 잘 살펴보면, 어차피 첫 if문에 걸리기 때문에 2번째 중복되는 칭호는 신경 쓸 필요가 없어진다.

 

그리고 if문에 해당되는 값을 찾기 위해서는 set의 lower_bound 메소드를 써서 간편하게 칭호에 해당하는 값을 찾아낼 수 있다.

여기서 set의 lower_bound는 이진 탐색을 기반으로 하기 때문에 $O(logN)$이라는 시간 복잡도를 가진다.

std::lower_bound가 아니라 set의 lower_bound를 써야한다는 점에 주의를 기울여야 한다. std::lower_bound의 경우에는 랜덤 액세스 기반의 이터레이터이므로 최악의 경우 $O(N)$이라는 시간복잡도를 가지기 때문이다.

 

'TIL💡 > Algorithms' 카테고리의 다른 글

[자료구조] B-트리, B+트리  (0) 2022.09.30
[자료구조] AVL 트리  (0) 2022.09.30
[백준] 2512번: 예산  (0) 2022.09.27
[프로그래머스] 랭킹전 대기열  (0) 2022.09.27
[프로그래머스] 등산코스 정하기  (1) 2022.09.27