2750번 - 수 정렬하기
2022. 4. 13. 16:22ㆍ백준/C++
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
//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 |