728x90
문제 접근
1. 숫자들을 n회 만큼 반복해서 받는데 배열의 저장된다.
2. 입력받은 숫자들은 배열의 인덱스로, 해당 인덱스의 값이 올라감은 그 인덱스(=숫자)가 반복회서 나타남을 말한다.
3. 배열에 저장된 값을 출력, 이 때 해당 인덱스의 값이 0이면 그 숫자가 나온 적이 없으므로 패스한다.
4. 값이 저장되어 있다면 값만큼 그 숫자(=인덱스)를 출력한다.
느낀점
처음에는 숫자의 범위를 생각하지 못하고 단순하게 정렬 알고리즘을 공부했다. 이번 기회로 인해서 힙 정렬에 대해서 다시 짚어보았다. 하지만 제출했을 때 메모리 초과가 나왔다. 숫자가 10,000보다 작다는 점이 배열을 통해서 쉽게 해결할 수 있음을 알고 비교적 쉽게 해결하였다.
코드
#include <stdio.h>
#define size 10001
int cnt[size] = { 0, };
int main() {
int N, num;
scanf("%d", &N);
for (int i = 0; i < N;i++) {
scanf("%d", &num);
cnt[num]++;
}
for (int i = 0;i <= size;i++) {
if (cnt[i] == 0) continue;
for (int j = 0;j < cnt[i];j++) {
printf("%d\n", i);
}
}
return 0;
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C] 백준 1427번 : 소트인사이드 (0) | 2021.05.11 |
---|---|
[C] 백준 2108번 : 통계학 (0) | 2021.05.11 |
[C] 백준 2577번 : 숫자의 개수 (0) | 2021.04.23 |
[C] 백준 2751번 : 수 정렬하기 2 (0) | 2021.04.15 |
[C] 백준 2750번 : 수 정렬하기 (0) | 2021.04.12 |
댓글