수 정렬하기 3
https://www.acmicpc.net/problem/10989
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
5 초 | 8 MB | 209707 | 48717 | 36866 | 23.513% |
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다.
이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1
10 5 2 3 1 4 2 3 5 1 7
예제 출력 1
1 1 2 2 3 3 4 5 5 7
출처
비슷한 문제
알고리즘 분류
메모리 초과
아무 생각 없이 N의 최대값만큼 배열을 선언하고 정렬하여 출력하려고 했다.
제출하고 보니 메모리 초과….응?
문제를 확인해보니 메모리 제한이 8MB이다…!
#include <iostream> #include <algorithm> using namespace std; int arr[10000001]; int N; int main() { cin >> N; int temp = 0; while (temp < N ) { cin >> arr[temp]; temp++; } sort(arr, arr + N); for (int i = 0; i < N; i++) { cout << arr[i] << "\n"; } return 0; }
시간 초과
메모리가 너무 적으니 다른 방법을 생각했다.
주어지는 수는 최대값이 10,000보다 작은 자연수
해당 크기만큼 배열을 선언하고 배열의 인덱스 수가 나오면 해당 배열의 값을 1 추가하는 방법이다.
만약 i 가 나온다면 arr[i]++ <= 카운트하고 값만큼 그 인덱스를 출력해주는 방법
#include <iostream> using namespace std; int arr[10001]; int N, temp; int main() { cin >> N; while (N-- > 0) { cin >> temp; arr[temp]++; } for (int i = 1; i <= 10000; i++) { for (int j = 0; j < arr[i]; j++) { cout << i << "\n"; } } return 0; }
아무리 생각해도 이것보다 빠를 순 없을 텐데… 시간 초과…
이것저것 시험해 보다가 해결이 안 돼서 다른 글들을 찾아보았다.
결과적으로 입력과 출력의 문제였다. cin / cout
https://jaimemin.tistory.com/1521 <- 퍼온곳
통과된 코드
ios_base::sync_with_stdio(false); 로 동기화를 풀어주자
#include <iostream> using namespace std; int arr[10001]; int N, temp; int main() { ios_base::sync_with_stdio(false); // 동기화를 비활성화 // cin.tie(null); 코드는 cin과 cout의 묶음을 풀어줍니다. cin.tie(NULL); cout.tie(NULL); cin >> N; while (N-- > 0) { cin >> temp; arr[temp]++; } for (int i = 1; i <= 10000; i++) { if (arr[i] == 0) continue; for (int j = 0; j < arr[i]; j++) { cout << i << "\n"; } } return 0; }
아 빡쳐
However Theoharis points to a brand new York Occasions poll from 1964 – the same yr the Civil Rights Act was passed – that confirmed a majority of white New Yorkers thought the Civil Rights Movement had gone too far.
Hello there! Do you know if they make any plugins to assist with Search Engine Optimization? I’m trying to get my website to rank for some
targeted keywords but I’m not seeing very good gains.
If you know of any please share. Thanks!
You can read similar article here: Blankets