문제
N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다.
입력
첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
출력
첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다.
풀이
입력되는 수가 최대 10만개이고, 수의 범위가 -1000 ~ 1000까지로 매우 작기 때문에 sort를 사용하는 것보다 어떠한 수를 입력받았는지 확인해서 출력하는 것이 더 빠르다.
오름차순으로 정렬한 결과를 출력해야 하기 때문에 음수와 양수를 각각 boolean 배열을 이용하여 입력받았는지를 확인하여 출력하였다.
코드
더보기
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
bool plus[1001] = { false, };
bool minus[1001] = { false, };
cin >> n;
for (int i = 0; i < n; i++) {
int input;
cin >> input;
if (input < 0) {
minus[abs(input)] = true;
}
else {
plus[input] = true;
}
}
for (int i = 1000; i > 0; i--) {
if (minus[i])
printf("%d ", i * -1);
}
for (int i = 0; i <= 1000; i++) {
if (plus[i])
printf("%d ", i);
}
return 0;
}
'Old > 백준' 카테고리의 다른 글
백준 2485번 가로수 // C++ (0) | 2020.04.22 |
---|---|
백준 9663번 N-Queen // C++ (0) | 2020.04.22 |
백준 1406번 에디터 // C++ (0) | 2020.04.22 |
백준 16397번 탈출 // C++ (0) | 2020.03.18 |
백준 5427번 불 // C++ (0) | 2020.03.18 |