백준 단계별로 풀어보기/정렬

백준 2750 수 정렬하기

jgs7784 2022. 9. 18. 16:36
728x90
반응형

수 정렬하기 성공

 

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
 
int main(){
    int count;
    
    scanf("%d",&count);
    int array[count];
    for(int i=0; i<count; i++){
        int num;
        scanf("%d",&num);
        array[i] = num;
    }
    //입력 부
    //가장 단순하게 가보자
    //insertion sort
    for(int i=1; i<count; i++){
        int key = array[i];
        int j;
        for(j=i-1; j>=0 && array[j]>key; j-- ){
            array[j+1= array[j];
        }
        array[j+1= key;
    }
    for(int i=0; i<count; i++){
        printf("%d\n",array[i]);
    }
 
    
}
cs

삽입 정렬을 활용했다.

 

가장 먼저 array[i]의 2번째 값(array[1]) 을 키 값으로 설정한 후, 그 앞에 있는 값들과 순서대로 비교한다

j 는 i 보다 1칸 앞의 수 부터 시작해서

배열에 존재하는 key값(array[i]) 과 비교하여 자신이 크면 key와 자리를 바꾼다.

반응형