백준(C언어) 풀이/정렬

백준(C) 2752번 세수정렬 풀이

개발윗미 2021. 7. 16. 18:44

C로 구현한 2752번 세수정렬 구하기 문제 풀이입니다.

 

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

 

2752번: 세수정렬

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

www.acmicpc.net


#include <stdio.h>

int main() {
    int input[3];
    int min, index, temp;
    for(int i=0; i<3; i++ ){
        scanf("%d", &input[i]);
    }
    for(int j=0; j<3; j++) {
        min = 1000001;
        for(int k=j; k<3; k++) {
            if(input[k] < min) {
                min = input[k];
                index = k;
            }
        }
        temp = input[j];
        input[j] = input[index];
        input[index] = temp;
    }
    for(int i=0; i<3; i++) {
        printf("%d ", input[i]);
    }
}

 

숫자 세 개가 주어지는데 1,000,000 보다 작거나 같아야 하기 때문에 최소값 변수 min의 초기값은 1,000,001로 

 

잡아준다. for문을 통해 각 배열 자리의 값을 최소값 변수와 비교하여 더 작을 경우 해당 값을 min에 넣어주고

 

해당 값의 배열 자리도 index 변수에 할당해준다. 이러한 작업을 반복하여 최소값과 해당 값의 위치를 구하고

 

원래 자리의 값과 현재 구한 최소값을 스와핑하여 교체한다. 이와 같은 작업을 입력받은 수의 개수만큼 반복하여

 

최종적으로 오름차순으로 정렬하고 출력한다.

 

[소감]

기존에 연습했던 선택 정렬을 사용함으로써 코드를 빠르게 구현하고 해결할 수 있었다. 이렇게 여러번 연습하다보니까

 

확실히 문제에 직면했을 때 빠르게 해결할 수 있는 것 같다 ㅎㅎ

'백준(C언어) 풀이 > 정렬' 카테고리의 다른 글

백준(C) 2750번 수 정렬하기 풀이  (0) 2021.07.16