728x90
문제주소 : https://www.acmicpc.net/problem/10989
문제
풀이
- O(nlogn)으로도 풀 수 없는 시간복잡도의 수의 개수를 가지고 있다(10,000,000)
c++의 sort로는 nlogn의 속도의 시간복잡도기에 계수정렬 O(kn)을 통해 풀어야 한다
코드는 아래 숨김
더보기
#include <iostream>
#include <vector>
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
int n;
std::cin >> n;
//std::vector<int> nums(n, 0);
std::vector<int> forsort_arr(10001, 0);
//for (int i = 0; i < n; ++i) {
// std::cin >> nums[i];
//}
int temp;
for (int i = 0; i < n; ++i) {
std::cin >> temp;
forsort_arr[temp] = forsort_arr[temp] + 1;
}
for (int i = 0; i < forsort_arr.size(); ++i) {
while (forsort_arr[i] > 0) {
std::cout << i << "\n";
forsort_arr[i] -= 1;
}
}
return 0;
}
알게 된 것
- 기수정렬, 계수정렬에 대해 알게 되었다
- 기수정렬은 정렬방식이 정말 신박하다.. 큐를 사용해서 간단히 구현도 가능하다.
- 수의 개수가 많을 땐 시간복잡도뿐만 아니라 메모리도 주의하자.. 저장을 별도의 벡터에 하면 시간복잡도 측면에서는 거의 영향을 받지 않으나 메모리는 두배로 먹게 되어 통과할 수 없다.
728x90
'운동하는 개발자 > 알고리즘, 코딩테스트' 카테고리의 다른 글
Beakjoon] DFS와 BFS (백준 1260 코테) - 탐색 (1) | 2023.12.04 |
---|---|
Beakjoon] 연결 요소의 개수 (백준 11724 코테) - 탐색 (0) | 2023.11.28 |
Beakjoon] 버블 소트 2 (백준 1517코테) - 정렬 (0) | 2023.11.25 |
실무자가 경험한 코딩테스트(알고리즘) 책 추천 + 스토리.. (2) | 2023.11.09 |
Beakjoon] '좋은 수' 구하기 (백준 코테) = 투포인터 (0) | 2023.11.06 |