https://www.acmicpc.net/problem/10989
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
풀이
#include <stdio.h>
int main(void){
int N;
scanf("%d", &N);
int counting[10001]={};
for(int i=0; i<N; i++){
int input;
scanf("%d", &input);
// input인덱스의 값 +1 (=인덱스의개수)
counting[input]++;
}
for(int i=0; i<10001; i++){
// counting[i] 횟수만큼 i 출력
for(int j=0; j<counting[i]; j++){
printf("%d\n", i);
}
}
}
계수정렬(counting sort)를 통해
각 입력과 같은 수의 인덱스에 그 인덱스의 반복횟수를 저장하는 배열을 만들고
출력시에 반복 횟수만큼 출력 가능하다
'코딩 > 백준 문제 (브론즈)' 카테고리의 다른 글
[백준/10872/C언어] 팩토리얼 _ 풀이 (0) | 2023.10.25 |
---|---|
[백준/4153/C언어] 직각삼각형 _ 풀이 (0) | 2023.09.20 |
[백준/2577/C언어] 숫자의 개수 _ 풀이 (0) | 2023.09.10 |
[백준/25305/C언어] 커트라인 _ 풀이 (0) | 2023.09.07 |
[백준/2587/C언어] 대표값2 _ 풀이 (0) | 2023.09.05 |