개념
정렬 알고리즘 중, 시간 복잡도가 O(n^2) 인 알고리즘만 사용해왔는데, 이 문제에서는 이런 알고리즘을 사용할 경우 시간 초과가 뜬다. 이를 해결하기 위해서는 O(nlogn) 정렬 알고리즘을 사용해야 한다는 것을 알게 되었다.
시간 복잡도가 O(n^2) 인 알고리즘은 n개의 원소를 바로 옆에 있는 원소와 비교해야 하기 때문에 n(n-1), 즉 O(n^2) 가 된다. 그렇다면 바로 옆 원소에 비교하는 방법을 안쓰면 된다!
O(nlogn) 정렬 알고리즘에 해당하는 분할 정복에 대해 알아보았다.
분할 정복이란, 주어진 수열을 분할한 뒤 정복(원하는 순서로 바꿔서 배열) 하는 것이다.
우선 수열이 더 나눠지지 않을 때까지 나눈 뒤 (분할)
이것을 원하는 순서로 배열한다. (정복)
'solving > C, C++' 카테고리의 다른 글
[백준] 25177번 서강의 역사를 찾아서 (0) | 2022.09.01 |
---|---|
[백준] 2525번 오븐 시계 (0) | 2022.08.31 |
[백준] 2609번 최대공약수와 최소공배수 (0) | 2022.08.29 |
[백준] 2798번 블랙잭 (0) | 2022.08.29 |
[백준] 1157번 단어 공부 (0) | 2022.08.28 |