์๋ ํ์ธ์ ์ฃผ์ธ์ฅ H์ ๋๋ค.
https://www.acmicpc.net/problem/2751
2751๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 2
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ ์ ๋๊ฐ์ด 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ์๋ ์ค๋ณต๋์ง ์๋๋ค.
www.acmicpc.net
๋ฌธ์
N๊ฐ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ ์ ๋๊ฐ์ด 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ์๋ ์ค๋ณต๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
5 5 4 3 2 1
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
1 2 3 4 5
ํด๋น ๋ฌธ์ ๋ ํต์ ๋ ฌ๋ก ํ์ด๋ณผ ์ ์์ต๋๋ค.
ํ์ง๋ง ํต์ ๋ ฌ์ ๋ฌธ์ ๋ ์ธ์ ๋ ์๊ฐ๋ณต์ก๋ O(N*log N)๊ฐ ๋์ง ์์์.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฌธ์ ๋ ์๋๋ ๋ฌธ์ ๋ ์์ง๋ง ์ ๋ต ์ฒ๋ฆฌ๊ฐ ๋์ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ C++ ์ sortํจ์๋ฅผ ์ด์ฉํด์ ์ฌ์ฉํด์ผ์ง๋ง ์ธ์ ๋ O(N*log N)๊ฐ ๋ฉ๋๋ค.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int number, data[1000000];
void quickSort(int* data, int start, int end) {
if (start >= end) { // ์์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๋๊ธฐ
return;
}
int key = start; // ํค๋ ์ฒซ ๋ฒ์งธ ์์
int i = start + 1, j = end, temp;
while (i <= j) { // ์๊ฐ๋ฆด ๋๊น์ง ๋ฐ๋ณต
while (data[i] <= data[key]) { // ํค ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ ๋ง๋ ๋๊น์ง
i++;
}
while (data[j] >= data[key] && j > start) { // ํค ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๋ง๋ ๋๊น์ง
j--;
}
if (i > j) { // ํ์ฌ ์๊ฐ๋ฆฐ ์ํ๋ฉด ํค ๊ฐ๊ณผ ๊ต์ฒด
temp = data[j];
data[j] = data[key];
data[key] = temp;
}
else { // ์๊ฐ๋ฆฌ์ง ์์๋ค๋ฉด i์ j๋ฅผ ๊ต์ฒด
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
quickSort(data, start, j - 1);
quickSort(data, j + 1, end);
}
int main(void) {
scanf("%d", &number);
for (int i = 0; i < number; i++) {
scanf("%d", &data[i]);
}
quickSort(data, 0, number - 1);
for (int i = 0; i < number; i++) {
printf("%d\n", data[i]);
}
return 0;
}
#include <stdio.h>
#include <algorithm>
int number, data[1000000];
int main(void) {
scanf("%d", &number);
for (int i = 0; i < number; i++) {
scanf("%d", &data);
}
std::sort(data, data + number);
for (int i = 0; i < number; i++) {
printf("%d\n", data[i]);
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ ํ์ด > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋จ์ด์ ๋ ฌ 1181๋ฒ ๋ฌธ์ ํ์ด (0) | 2020.08.18 |
---|---|
[๋ฐฑ์ค] 2752 : ์ธ ์ ์ ๋ ฌ (0) | 2020.08.05 |
[๋ฐฑ์ค]์ ์ ๋ ฌํ๊ธฐ 2750 (0) | 2020.08.05 |
[c์ธ์ด] ๋ฐฑ์ค 5543 ์๊ทผ๋ ๋ ๋ฌธ์ ํ์ด, ์ผํญ ์ฐ์ฐ์ (0) | 2020.04.02 |
[c์ธ์ด]๋ฐฑ์ค 10039๋ฒ ํ๊ท ์ ์ ํ์ด (0) | 2020.03.30 |