반응형
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
‘2750번- 수 정렬하기’와 동일한 방식으로 풀기가 가능하다.
하지만 스터디에서 배웠던 counting sort방식으로 문제를 풀어보고 싶었다 헤헤😉
수의 범위를 설정하는 것에 있어서 주의가 필요했다. 수에 절대값을 주었을 때 1000000을 넘지 않는다고 했으니 이 -1000000~1000000의 범위를 고려해야했다.
그렇기 때문에 counting sort에 사용할 배열의 크기를 2000001로 설정했다.
후에 입력값을 받으면서 입력값+1000000을 해주어 음수의 범위까지 배열에 담을 수 있도록 하였다.
후에 처음부터 끝까지 수가 있는 곳의 인덱스-1000000를 해주어 출력해주었다.
code 🌱
#include <iostream>
using namespace std;
bool num[2000001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, number;
cin >> N;
while (N--) {
cin >> number;
num[number + 1000000] = true;
}
for (int i = 0; i <= 2000000; i++) {
if (num[i]) {
cout << i - 1000000 << "\n";
}
}
return 0;
}
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[백준 10815번 숫자카드/ C++] (0) | 2020.12.02 |
---|---|
[백준 1325번 효율적인 해킹/C++] (0) | 2020.12.02 |
[프로그래머스 - 기능 개발 / C++] (3) | 2020.12.02 |
[프로그래머스 - 다리를 지나는 트럭 / C++] (0) | 2020.12.02 |
[백준 20055번 컨베이어 벨트 위의 로봇 - 삼성 코테 기출 / C++] (3) | 2020.11.29 |
댓글