코딩테스트 & 문제 풀이

[C]백준_2752 : 세수정렬

Hicecream 2023. 12. 18. 15:15

2023년 2월 11일에 작성됨

 

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

 

2752번: 세수정렬

정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다.

www.acmicpc.net

 

 

문제 분석

숫자 3개를 입력했을 때, 오름차순으로 정렬하여 출력하는 문제이다.

 

 

소스 코드 -1 (⭕)

#include <stdio.h>

int main(void)
{
    int a, b, c;

    scanf("%d %d %d", &a, &b, &c);

    if (a < b && b < c) {
        printf("%d %d %d", a, b, c);
    }
    else if (a < c && c < b) {
        printf("%d %d %d", a, c, b);
    }
    else if (b < c && c < a) {
        printf("%d %d %d", b, c, a);
    }
    else if (b < a && a < c) {
        printf("%d %d %d", b, a, c);
    }
    else if (c < b && b < a) {
        printf("%d %d %d", c, b, a);
    }
    else
        printf("%d %d %d", c, a, b);

    return 0;
}

 

 

 

소스 코드 -2 (⭕)

#include <stdio.h>

int main() {
    int a, b, c, t;
    scanf("%d %d %d", &a, &b, &c);

    if (a > b) {
        t = a; a = b; b = t;
    }
    if (b > c) {
        t = b; b = c; c = t;
    }
    if (a > b) {
        t = a; a = b; b = t;
    }
    printf("%d %d %d\n", a, b, c);

    return 0;
}

 

 

코드 분석

코드-1

if 문으로 각 경우의 수를 나누어서 해당 경우의 순으로 출력해준다.


코드-2

a, b, c 순으로 크기를 맞추기 위해 a를 가장 작은 수로, c를 가장 큰 수로 해줘야 한다.

a가 b보다 큰 경우, 변수 t를 임시 저장소로 이용하여 a와 b의 값을 바꿔준다.

b가 c보다 큰 경우, b와 c의 값을 서로 바꿔주면 c가 젤 큰 수가 된다.

마지막으로 a가 b보다 큰 경우, 값을 서로 바꿔주면 a가 젤 작은 수가 된다.

 

 

 

end

이 문제를 c언어 배운지 얼마 안됐을 때 풀었는데 코드-1이 지금보니 너무 노가다 식이라 웃긴다ㅋㅋㅋㅋ 차라리 중첩 if문을 사용하는게 더 나았을건데ㅋㅋㅋ