2751๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 2
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ ์ ๋๊ฐ์ด 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ์๋ ์ค๋ณต๋์ง ์๋๋ค.
www.acmicpc.net
๐๋ฌธ์
๐ฌ ์์ ์ ๋ ฅ
5
5
4
3
2
1
๐ฌ ์์ ์ถ๋ ฅ
1
2
3
4
5
๐ ๋์ ํ์ด
๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋น์ฐํ Arrays.sort() ๋ฅผ ์ฌ์ฉํ๋ ค ํ์ง๋ง,, ์๊ฐ ์ด๊ณผ.
ํต ์ ๋ ฌ์ ํ๊ท ์๊ฐ ๋ณต์ก๋๊ฐ O(nlogn) ์ด์ง๋ง, ์ต์ ์ ๊ฒฝ์ฐ O(n2) ๊น์ง ๋ ์๋ ์๋ค.
์ผ๋ถ๋ฌ ํต ์ ๋ ฌ์ ๋ชป์ฐ๊ฒ ํ๋ ค๊ณ ํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒ ๊ฐ๋ค. ( ๊ทธ๋ผ ๋ค๋ฅธ๊ฑฐ ์ฐ๋ฉด ๋์ง๐)
Merge Sort ์ฌ์ฉ
X
Counting Sort ์ฌ์ฉ
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
int[] arr = new int[2000001];
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(bf.readLine());
for (int i = 0; i < N; i++) {
arr[Integer.parseInt(bf.readLine()) + 1000000 ] = 1;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 1) {
sb.append(i - 1000000).append('\n');
}
}
System.out.println(sb);
}
}
๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ 1,000,000 ์ด ์๋๊ณ 2,000,000์ผ๋ก ํด๋๋ ์ด์ ๋ -1,000,000์ ์ ๋ ฅ ๋ฐ์์ ๊ฒฝ์ฐ์ arr[0] ๊ฐ์ ์ฒดํฌ ํด๋จ๋ค๊ฐ
๋ค์ ์ถ๋ ฅํ ๋, 0 - 1,000,000๋ฅผ ํด์ฃผ๋ฉด ์ฒ์ ์ ๋ ฅ ๋ฐ์๋ -1,000,000๋ฅผ ์ถ๋ ฅ์ ํ ์ ์๋๋ก ๋๋ฐฐ๋ก ๋ฏธ๋ฆฌ ์์ฑ์ ํด๋์๋ค!
Collections.sort() ๋ฅผ ์ฌ์ฉ
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < N; i++) {
arrayList.add(Integer.parseInt(bf.readLine()));
}
Collections.sort(arrayList);
for (Integer integer : arrayList) {
bw.write(integer + "\n");
}
bw.flush();
bw.close();
}
}