algorithm 백준 2570 정렬 (c)

less than 1 minute read

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

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

[출처] : 백준 온라인 저지

풀이

#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    
    int i, j, key, num;
    
    scanf("%d", &num);
    int* data = (int*)malloc(sizeof(int)*(num+1));
    
    for(i=0; i<num; i++){
        scanf("%d", &data[i]);
    }
    
    for (i = 1; i < num; i++) {
		key = data[i];
		j = i - 1;
		while (j >= 0 && data[j] > key) {
            data[j + 1] = data[j];
            j--;
        }
		data[j+1] = key;
	}
    
    for(i = 0; i<num; i++) printf("%d\n", data[i]);
    free(data);
    
}
  • 삽입정렬 Insertion Sort로 오름차순 정렬 구현
  • malloc 을 사용할 때 에러가 자꾸 남 (ㅠㅠ)
    • # include <stdlib.h> 헤더를 적어주고
    • int* list = (int*)malloc(sizeof(int)*(num+1)) 로 해줬더니 해결됐다
  • list[j + 1] = list[j–]; 라고 하니까 에러가 났다
    • 따로 빼서 j–; 라고 했을 때 잘 작동했음

더보기

Categories:

Updated:

Comments