#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
//int main(){
// //freopen("input.txt", "rt", stdin);
// int a[101], n, tmp, i, j, b[101], c[101];
// scanf("%d", &n);
// for(i=0; i<n; i++){
// scanf("%d", &a[i]);
// }
//
// int b_cnt=0, c_cnt=0;
// for(i=0; i<n; i++){
// if(a[i]<0) {
// b[b_cnt]=a[i];
// b_cnt++;
// }
// else if(a[i]>0){
// c[c_cnt]=a[i];
// c_cnt++;
// }
// }
//
// for(i=0; i<b_cnt; i++){
// printf("%d ", b[i]);
// }
// for(i=0; i<c_cnt; i++){
// printf("%d ", c[i]);
// }
// return 0;
//}
int main(){
//freopen("input.txt", "rt", stdin);
int a[101], n, tmp, i, j;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
for(i=0; i<n; i++){
for(j=0; j<n-1-i; j++){
if(a[j]>0 && a[j+1]<0) { //앞이 양수, 뒤가 음수면 swap
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0; i<n; i++){
printf("%d ", a[i]);
}
return 0;
}
음수-양수 순서만 지키고 + 음수끼리/양수끼리의 원래 순서는 그대로 출력되어야 한다
그래서 음수 배열/양수 배열을 선언하고 여기에 삽입하는 식으로 코드를 작성했는데,
이런 방법이 아니라 버블 정렬을 이용해서 인접한 값끼리 비교하여 정렬하면 된다.
j 가 양수, j+1이 음수일 때만 swap!
'스터디 > 알고리즘' 카테고리의 다른 글
[알고리즘][C++] Least Recently Used (0) | 2022.07.30 |
---|---|
[알고리즘][C++] 삽입정렬 (0) | 2022.07.29 |
[알고리즘][C++] 버블정렬 (0) | 2022.07.26 |
[알고리즘][C++] 선택정렬 (0) | 2022.07.26 |
[알고리즘][C++] 3의 개수 (시간제한) 🌟 (0) | 2022.07.25 |