2751 JAVA μ μ λ ¬νκΈ° 2
π λ¬Έμ
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
π μ½λ κ³Όμ
νλ¦° μ½λ 1
μ²μμ HashMap μ μ¬μ©νλ €κ³ νλ€. μλμΌλ‘ μ λ ¬μ΄ λλ μ€ μκ³ μμλλ°, HashMapμ΄ μλλΌ Heap μ΄ μλμ λ ¬μ μ§μνλ κ²μ΄μλ€. μλ°λ Heapμ λ΄μ₯νκ³ μμ§ μκΈ° λλ¬Έμ λ€λ₯Έ λ°©λ²μ μ΄μ©νκ³ μ νλ€.
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
// μ
λ ₯
HashMap<Integer, Integer> sMap = new HashMap<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n ; i ++){
sMap.put(Integer.parseInt(br.readLine()), 0);
}
//μΆλ ₯
for (int key : sMap.keySet()){
System.out.println(key);
}
}
}
νλ¦°μ½λ 2
ArrayListλ₯Ό μ΄μ©νλ€. λ΄μ₯ ν¨μμΈ ArrayList.sort()λ μ΅μ O(nlongN)μ μ§μνμ§λ§ μ μ κ²½μ° O(N^2)λ₯Ό μ§μνκΈ° λλ¬Έμ O(N^2)μ΄ λμ§ μλ μ΄ λ¬Έμ μμλ μ¬μ©μ΄ λΆκ°λ₯νλ€. λ°λΌμ, Collections.sort()λ₯Ό μ΄μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμλ€.
νμ¬ λ¬Έμ λ 2μ΄μ μκ° μ νμ΄ μμΌλ―λ‘ μ΄ 2μ΅λ²μ μ°μ°λ§ μνμ΄ κ°λ₯νλ€.
νμ§λ§, νμ¬ Nμ κ°μ 10^6 μ΄λ―λ‘ 2μ΄λμμ μκ°λμ O(N^2)μΌ κ²½μ° 10^12λ²μ μ°μ°μ μ§ννλ€. λ°λΌμ, O(N)μ κ°κΉκ² μ κ·Όν΄μΌνλ κ²μ΄λ€.
νλ¦°μ½λ 3
κ·ΈλΌμλ λΆκ΅¬νκ³ μκ°μ΄κ³Όκ° λ¬λ€. κ·Έ μ΄μ λ System.out.printlnμ΄ StringBuilder μ λΉν΄ μκ°μμλμ΄ λμ κ²μ΄μλ€. λ°λΌμ λ³κ²½ ν μ΅μ’ μ½λλ λ€μκ³Ό κ°λ€.
μ΅μ’ μ½λ
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
// μ
λ ₯
ArrayList<Integer> sArray = new ArrayList<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n ; i ++){
sArray.add(Integer.parseInt(br.readLine()));
}
Collections.sort(sArray);
StringBuilder sb = new StringBuilder();
//μΆλ ₯
for (int value : sArray){
sb.append(value).append('\n');
}
System.out.println(sb);
}
}