백준 웹사이트 "1427번 - 소트인사이드" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
#include <string.h>
int main(void){
char N[11]; // N은 1,000,000,000 보다 작거나 같음
scanf("%s", N);
int length = strlen(N);
int counting[10];
for(int i=0; i<10; i++){
counting[i]=0;
}
for(int i=0; i<length; i++){
counting[N[i]-'0']++;
}
for(int i=9; i>=0; i--){
for(int j=0; j<counting[i]; j++){
printf("%d", i);
}
}
}
문제 풀이
이 문제를 쉽게 푸는 방법은 바로 '문자열'을 이용하는 것입니다. 입력되는 숫자를 int로 받으면 하나의 변수에 큰 숫자가 저장되지만, char 배열로 받으면 각 자릿수가 각각의 배열 요소에 저장됩니다. 이러한 char 배열 'N'을 카운팅 정렬 (Counting Sort)로 정렬하고 다시 출력하면, 문제는 쉽게 해결됩니다. 카운팅 배열에 대한 설명은 백준 10989번 문제 풀이를 참고해주세요!
아래는 백준 웹사이트 "10989번 - 수 정렬하기 3" 문제풀이 링크입니다. 카운팅 정렬을 이용해 수를 정렬하는 방법이 나옵니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 11651번 - 좌표 정렬하기 2 (0) | 2022.02.16 |
---|---|
[백준/C언어] 11650번 - 좌표 정렬하기 (0) | 2022.02.15 |
[백준/C언어] 2108번 - 통계학 (0) | 2022.02.13 |
[백준/C언어] 10989번 - 수 정렬하기 3 (0) | 2022.02.12 |
[백준/C언어] 2751번 - 수 정렬하기 2 (0) | 2022.02.11 |