반응형

문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
풀이
그 전까지의 정렬 문제는 숫자를 각각 입력 받아서 배열에 입력할 수 있었지만 이 문제는 숫자를 한 줄에 다 줬기 때문에
우선 string형식으로 받아서 char 배열에 넣어 각 인덱스 당 숫자 하나씩 나눌 수 있었다
그리고 strlen함수를 이용해서 최대 인덱스 값. 즉, 숫자의 개수를 구할 수 있었고
char 배열에 입력 받은 숫자들을 48을 빼서 int형으로 다시 바꿔준 후 버블정렬을 통해 내림차순으로 재정렬해줬다
코드
#include <stdio.h>
#include <string.h>
//인접한 숫자끼리 크기비교해서 위치교환
void DESC(int arrSorted[], int len) {
int temp;
for(int i = 1; i < len; i++) {
for(int j = i; j > 0; j--) {
if(arrSorted[j] >= arrSorted[j - 1]) {
temp = arrSorted[j];
arrSorted[j] = arrSorted[j - 1];
arrSorted[j - 1] = temp;
}
}
}
}
int main(void) {
char n[100] = {};
int arrSorted[100] = {};
scanf("%s", n); //전체 숫자를 string 형식으로 받아 char배열에 입력
int len = strlen(n); //숫자 개수 구하기
for(int i = 0; i < len; i++) { //전체 숫자를 int형으로 전환
arrSorted[i] = n[i] - 48;
}
DESC(arrSorted, len); //버블정렬로 내림차순 정렬
for(int i = 0; i < len; i++) { //출력
printf("%d", arrSorted[i]);
}
return 0;
}
반응형
'🧠 Algorithm > [C] BOJ' 카테고리의 다른 글
[C언어] 11651번 - 좌표 정렬하기 2 (0) | 2022.04.09 |
---|---|
[C언어] 11650번 - 좌표 정렬하기 (0) | 2022.04.09 |
[C언어] 2108번 - 통계학 (0) | 2022.04.08 |
[C언어] 10989번 - 수 정렬하기 3 (카운팅 정렬, Counting Sort) (0) | 2022.04.07 |
[C언어] 2751번 - 수 정렬하기 2 (힙 정렬, Heap Sort) (0) | 2022.04.07 |