개발자일걸요..?

10989번 수 정렬하기 3 본문

알고리즘코딩/Baekjoon Online Judge

10989번 수 정렬하기 3

Re_A 2021. 2. 3. 16:33
728x90
반응형

문제링크 : www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

이 문제는 카운팅 정렬을 이용해 푸는 문제입니다.

<카운팅정렬(Counting Sort) 알고리즘>

1. 배열의 처음부터 끝을 돌며 각 요소들이 몇번씩 등장하는지 세서 counting 배열 생성

    ex ) A 배열의 i번째 수가 1이라면, counting[1]+=1을 해줌

2. counting 배열을 작은 수부터 돌며 각 수가 몇번 등장했는지를 통해 새로운 배열 생성

    ex) counting[i] = 2 라면 i가 2번 들어가게 배열B 생성.

예제

+) 참고 : soobarkbar.tistory.com/101

 

계수 정렬 (Counting Sort)

소개 요소 값들끼리 서로 비교하지 않고 정렬하는 알고리즘이다. 배열 내 최대 값 + 1 만큼의 길이 배열이 필요하기 때문에 메모리가 낭비될 수 있다. 애니메이션 : URL 과정 1. 먼저 배열 내에 원

soobarkbar.tistory.com

 

#include <iostream>

int main() {
	int T = 0;
	scanf("%d", &T);
	
	int number[10001] = { 0 };
	int max = 0;
	for (int i = 0; i < T; i++) {
		int n = 0;
		scanf("%d", &n);
		number[n]++;
		if (max < n) max = n;
	}
	for (int i = 1; i < max+1; i++) {
		if (number[i] > 0) {
			for (int j = 0; j < number[i]; j++) {
				printf("%d\n", i);
			}
		}
	}

	return 0;
}
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

2751번 수 정렬하기 2  (0) 2021.02.04
2108번 통계학  (0) 2021.02.03
2750번 수 정렬하기  (0) 2021.02.02
1018번 체스판 다시 칠하기  (0) 2021.02.02
7568번 덩치  (0) 2021.02.01
Comments