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

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

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

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

 

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

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net


#include <stdio.h>

int main() {
    int input[1001];
    int num, min, index, temp;
    scanf("%d", &num);
    for(int i=0; i<num; i++ ){
        scanf("%d", &input[i]);
    }
    for(int j=0; j<num; j++) {
        min = 1001;
        for(int k=j; k<num; 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<num; i++) {
        printf("%d\n", input[i]);
    }
}

 

 

최소값의 초기 값을 1001로 설정하여 입력된 수가 최소값과 비교하였을 때 작을 경우 해당 값을 최소값 변수에 

 

할당하고 해당 값의 위치를 변수 index에 저장한다. 이러한 작업을 반복하여 최소값과 해당 값의 위치를 구하고

 

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

 

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

 

[소감]

이번 문제에서 선택 정렬 방식으로 문제를 해결하면서 선택 정렬이 어떠한 방식으로 처리가 되는지 확실하게 

 

이해할 수 있었다. 다른 정렬 방식도 사용해 보고 다양한 문제 해결 능력을 키워나가야겠다!

 

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

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