정렬 알고리즘
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
정렬 알고리즘 섹션에서 비교적 쉬운 문제이지만 조금 색다르게 풀어보기 위해 배열을 이용하였다.
어떻게 보면 저번에 학습한 배열파트를 잊지못해 적용해보고자 풀이해봤다.
#include <iostream>
using namespace std;
int main(){
int N = 1;
int n = 0;
int a[2000] = {}; //0이상 1000이하의 정수를 담을 배열
int b[2000] = {}; //-1000이상 0미만의 정수를 담을 배열
cin>>N; //받을 숫자의 개수
//사용자로부터 받은 숫자가 a배열의 범주인지 b배열의 범주인지 판단
for(int i = 0;i < N;i++){
cin>> n;
if (n > 0){
a[n]++;
}
if(n < 0){
b[-n]++;
}
if(n == 0){
a[n]++;
}
}
//a, b에 카운트된 배열을 음수부터 차례대로 출력한다.
for (int k = 1000;k > 0;k--){
if (b[k] > 0){
cout<<-k<<endl;
}
}
for(int j = 0;j < 1001;j++){
if (a[j] > 0){
cout<<j<<endl;
}
}
return 0;
}
'코딩 > 백준 알고리즘' 카테고리의 다른 글
백준 1629번 : 곱셈 (0) | 2024.05.14 |
---|---|
백준 2805번 : 나무 자르기 (0) | 2024.05.12 |
백준 2798번 : 블랙잭 (0) | 2022.02.15 |
백준 5622번 : 다이얼 (0) | 2022.02.15 |
백준 11720번 : 숫자의 합 (0) | 2022.02.15 |