본문 바로가기
backjoon/여러가지

백준 1427 소트인사이드 c언어

by 정구지개발자 2023. 2. 3.
728x90

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

1. 버블정렬이 생각났지만 비효율적인 정렬 방식이며 qsort정렬도 배웠기 때문에 이걸 이용하기로 결정

2. 기존 내가 알던 qsort정렬은 오름차순만 알고 있었는데 compare함수에 부호만 반대로 하면 내림차순이라 쉽게 만듬

3. 처음 배열을 result[] = {0}; 이렇게 선언하니까 세그먼트 오류가 떴다.

4. 그래서 어차피 숫자가 11자리가 최대이기 떄문에 result[11] = {0}; 로 바꿔 선언해주니 맞게 되었다.

 

나의코드)

#include <stdio.h>
#include <stdlib.h>

int compare(const void *first, const void *second)
{
    if (*(int*)first < *(int*)second)
        return (1);
    else if (*(int*)first > *(int*)second)
        return (-1);
    else
        return (0);
}

int main()
{
    int N, j;
    int i;
    int result[11] = {0};

    scanf("%d", &N);
    i = 0;
    while (N > 0)
    {
        result[i] = N%10;
        N = N/10;
        i++;
    }
    j = i;
    qsort(result, j, sizeof(int), compare);
    i = 0;
    while (i < j)
    {
        printf("%d", result[i]);
        i++;
    }
    return (0);
}

비판점 or 개선점 or 응용점)

1.  while문을 돌릴떄 i 를 사용할필요없이 while (j--) 이렇게만 적어줘도 코드가 훨씬 간결해 질거 같다.

728x90

'backjoon > 여러가지' 카테고리의 다른 글

백준 1934 최소공배수 c언어  (0) 2023.01.29
유클리드 호제법 c언어 구현하기  (0) 2023.01.29
qsort함수  (0) 2023.01.28
백준 1037 약수 c언어  (0) 2023.01.28
백준 5086 c언어  (0) 2023.01.27

댓글