문제 링크 : https://www.acmicpc.net/problem/10989
문제 풀이
Counting sort로 풀었다.
계수 정렬 게시글 https://manzoo.tistory.com/57 의 소스 코드로 제출하였더니 메모리 초과가 났다.
문제를 다시 자세히 보니 메모리 제한이 8MB로 걸려져 있었다.
하지만 데이터 값은 10000을 넘지 않는다는 조건이 있었다.
그래서 입력 데이터 수 만큼 배열을 할당하지 않고 카운트 배열만 10001만큼 할당을 받았다.
입력받는 대로 바로 count 배열에 저장한 후, 앞에서부터 개수만큼 출력을 했다.
하지만 그대로 제출하니 시간초과가 떴다.
cin → scanf
cout → printf 로 변경하니 시간초과가 뜨지 않았다.
소스코드
/*
* 백준 10989번: 수 정렬하기 3
*/
#include <iostream>
using namespace std;
#define MAX 10001
int main() {
int N;
scanf("%d", &N);
int count[MAX]{ 0, };
int num;
for (int i = 0; i < N; i++) {
scanf("%d", &num);
count[num]++;
}
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < count[i]; j++) {
printf("%d\n", i);
}
}
return 0;
}'Algorithm > 문제풀이' 카테고리의 다른 글
| [백준] 1427번: 소트인사이드 (0) | 2019.06.09 |
|---|---|
| [백준] 2108번: 통계학 (0) | 2019.06.09 |
| [백준] 2750번: 수 정렬하기 (0) | 2019.05.23 |
| [백준] 6064번: 카잉 달력 (0) | 2019.05.22 |
| [백준] 1475번: 방 번호 (0) | 2019.05.21 |