신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

 


문제

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

 

입력

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

 

출력

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

 

예제 입력

5
5
2
3
4
1

 

예제 출력

1
2
3
4
5

 

코드

선택정렬 사용한 방법

#include <stdio.h>
 
// 1 <= n <= 1000
int data[1000];
 
int main(void){
    
    int i, j, min, temp, index, num;
    
    scanf("%d", &num);
    
    for(i=0; i<num; i++){
        scanf("%d", &data[i]);
    }
    
    for(i=0; i<num; i++){
        min = 1001;
        for(j=i; j<num; j++){
            if(min > data[j]){
                min = data[j];
                index = j;
            }
        }
        temp = data[i];
        data[i] = data[index];
        data[index] = temp;
    }
    
    for(i = 0; i<num; i++){
        printf("%d\n", data[i]);
    }
    
    return 0;
}​

 

버블정렬 사용한 방법

#include <stdio.h>
 
// 1 <= n <= 1000
int data[1000];
 
int main(void){
    
    int i, j, temp, num;
    
    scanf("%d", &num);
    
    for(i=0; i<num; i++){
        scanf("%d", &data[i]);
    }
    
    // 버블 정렬
    for(i=0; i<num; i++){
        for(j=0; j<num-1-i; j++){
            if(data[j] > data[j+1]){
                temp = data[j];
                data[j] = data[j+1];
                data[j+1] = temp;
            }    
        }
    }
    
    for(i = 0; i<num; i++){
        printf("%d\n", data[i]);
    }
    
    return 0;
}
​

 

삽입정렬 이용한 방법

#include <stdio.h>
 
// 1 <= n <= 1000
int data[1000];
 
int main(void){
    
    int i, j, temp, num;
    
    scanf("%d", &num);
    
    for(i=0; i<num; i++){
        scanf("%d", &data[i]);
    }
    
    // 삽입 정렬
    for(i=0; i<num-1; i++){
        j = i;
        while(j>=0 && data[j] > data[j+1]){
            temp = data[j];
            data[j] = data[j+1];
            data[j+1] = temp;
            j--;
        }
    } 
 
    for(i = 0; i<num; i++){
        printf("%d\n", data[i]);
    }
    
    return 0;
}
​

 

 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.

더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)

 

 

문제 출처

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

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기