[C언어] 백준 1427 : 소트인사이드


생각의 흐름
- 음.. scanf를 하나만 써야되나? 여러개를 쓸 경우 구분할 수 없을까? 힘들겠다 scanf는 하나만 써도 될 것 같다.
 - 2143을 각각 arr[i]에 하나씩 넣어야 되는데, 음.. 각 자리수를 쪼개서 넣자. while(n > 0)반복문으로 %10, /10을 사용하자.
 - 그러면 arr[i]에 다 들어갔을테니, 정렬을 해주자. 원래라면 선택정렬이나 버블정렬을 했을텐데, 우리는 이전에 퀵정렬을 배웠으니 내장된 퀵정렬을 사용해보자.
 - 출력!
 
내가 푼 풀이
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) //
{
    int num1 = *(int *)a;
    int num2 = *(int *)b;
    if (num1 < num2) // 내림차순이라 부등호 바꿈
        return 1;
    if (num1 > num2)
        return -1;
    return 0;
}
int main()
{
    int i;
    int n;
    int len;
    scanf("%d", &n);
    int t = n;
    int s = n;
    len = 0;
    while (s > 0)
    {
        t = s % 10;
        s = s / 10;
        len++;
    }
    int arr[len]; // 처음에 int arr[n]으로 걍 때려박았는데
    // 손해가 너무 심해서 len수를 구한다음에 딱 저장할 공간만 만들어주었다.
    i = 0;
    while (n > 0)
    {
        t = n % 10;
        n = n / 10;
        arr[i] = t;
        i++;
    } // arr[i]에 각 자리수 넣어주기
    qsort(arr, len, sizeof(int), compare); // 퀵 정렬
    i = 0;
    while (i < len)
    {
        printf("%d", arr[i]);
        i++;
    }
}
다른 사람 풀이
https://miingjeong.tistory.com/47
이 사람은 char형으로 입력받았다. 따라서 %10 /10을 할 필요가 없다.
또한 문자형이기에 바로 strlen을 사용해서 길이를 구할 수 있었다.
char형 배열을 int형으로 다시 넣어주기 위해 arr배열을 만들었고, -'0'을 통해 int형으로 바꾸어주며 넣었다.
#include <stdio.h>
#include <string.h>
int main()
{
    int arr[10000] = {0, };
    char s[10000];
    int tmp = 0;
    int i, j;
    scanf("%s", &s);
    for (i = 0; i < strlen(s); i++)
        arr[i] = s[i] - '0';
    for (i = 0; i < strlen(s) - 1; i++)
    {
        for (j = 0; j < strlen(s) - 1; j++)
        {
            if (arr[j] < arr[j + 1])
            {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
    for (i = 0; i < strlen(s); i++)
        printf("%d", arr[i]);
    return 0;
}
                Author And Source
이 문제에 관하여([C언어] 백준 1427 : 소트인사이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimmainsain/C언어-백준-1427-소트인사이드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)