2750번 - 수 정렬하기

2022. 4. 13. 16:22백준/C++

문제

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

입력

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

출력

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

 

>> 삽입 정렬을 이용했다. 

2022.04.06 - [C++/알고리즘] - 삽입 정렬 - 1

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

using namespace std;

int main(void)
{
    int repeat;
    cin>>repeat;
    
    int A[repeat];
    for(int i = 0; i<repeat;i++)
    {
        int input;
        cin>>input;

        A[i] = input;
    }

    int key, comp;
    
    int lengthA= sizeof(A)/sizeof(A[0]); //sizeof는 요소의 byte수를 리턴


    for(int index = 1; index <lengthA; index++){
        key = A[index]; //  A[index]값을 저장한다.

        comp = index-1; 
        if(index == 1){
            if(key < A[comp]){
                A[index] = A[comp];
                A[0] = key;
            }

        }else{
            while(comp >=0){
                if(key < A[comp]){           // A[comp] 가 key값보다 작다면
                    A[comp+1] = A[comp];      // 오른쪽으로 한칸 미는 작업이다. key값이 들어갈 자리를 확보하기 위해서이다.
                }else{
                    A[comp+1] = key;
                    break;       
                }if(comp == 0){ //A[comp]가 0. 즉, 모든 수가 key 값보다 크다면
                    A[0] = key; 
                    
                }
                comp--;
            }   
        }
    }
    
    for(int n = 0; n<lengthA; n++)
        cout<<A[n]<<endl;

    return 0;
}

 

 

 

 

'백준 > C++' 카테고리의 다른 글

9012번 - 괄호  (0) 2022.04.22
10773번 - 제로  (0) 2022.04.22
15596번 - 정수 N개의 합  (0) 2022.04.14
10818번 - 최소, 최대  (0) 2022.04.14
10828번 - 스택  (0) 2022.04.13