개발자/문제풀이 (C언어)
[백준/BOJ] 1427번 소트인사이드 (C/C++)
devBB
2023. 7. 14. 21:12
728x90
반응형
백준 온라인 저지(BOJ) 1427번 소트인사이드
https://www.acmicpc.net/problem/1427
1427번: 소트인사이드
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
* 사용언어 : C언어, C++
1. 문제
배열이 아닌 숫자를 입력받고 각 자리수를 내림차순으로 정렬하여 출력
입력 N 은 1,000,000,000보다 작거나 같은 자연수
2. 풀이
n % 10 연산자를 활용하여 입력받은 숫자를 한 자리 씩 배열에 저장합니다.
이후 배열을 정렬한 뒤 출력하면 됩니다.
입력 N 은 최대 10억이므로 int 형 변수로 충분히 처리가 되고
자리수의 개수도 최대 10이므로 배열의 사이즈도 10이면 됩니다.
배열의 크기가 최대 10 인 작은 사이즈의 정렬 문제이므로
단순하게 구현이 가능한 선택 정렬을 사용해보았습니다.
3. 코드
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
1427_소트인사이드
1112KB 0ms
*/
#include <cstdio>
#define swap(a, b) {int t = a; a = b; b = t;}
int a[10], n, size;
void sSort() {
int max, pos;
for (int i = 0; i < size - 1; ++i) {
max = a[i], pos = i;
for (int j = i + 1; j < size; ++j) {
if (a[j] > max) {
max = a[j];
pos = j;
}
}
if (pos != i) swap(a[i], a[pos]);
}
}
int main() {
#ifdef _WIN32
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d", &n);
while (n) {
a[size++] = n % 10;
n /= 10;
}
sSort();
for (int i = 0; i < size; ++i) printf("%d", a[i]);
return 0;
}
728x90
반응형