CodingTest/Java
BOJ_2217 : λ‘ν
Soom_1n
2022. 10. 11. 10:44
2217λ²: λ‘ν
N(1 ≤ N ≤ 100,000)κ°μ λ‘νκ° μλ€. μ΄ λ‘νλ₯Ό μ΄μ©νμ¬ μ΄λ° μ λ° λ¬Όμ²΄λ₯Ό λ€μ΄μ¬λ¦΄ μ μλ€. κ°κ°μ λ‘νλ κ·Έ κ΅΅κΈ°λ κΈΈμ΄κ° λ€λ₯΄κΈ° λλ¬Έμ λ€ μ μλ 물체μ μ€λμ΄ μλ‘ λ€λ₯Ό μλ μλ€. ν
www.acmicpc.net
πΈ λ¬Έμ λΆμ πΈ
- μ λ ₯λ°μ λ‘νλ‘ λ€ μ μλ μ΅λ μ€λμ μΆλ ₯νλ€.
- μ΅λ μ€λμ κ°μ₯ μ½ν λ‘ν * λ‘νμ κ°μ μ΄λ€.
πΈ μ½λ πΈ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int arr[] = new int[n];
for (int i = 0; i < n; i++){
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int answer = 0;
for (int i = n-1; i >= 0; i--){
int temp = arr[i] * (n-i);
if (temp > answer) answer = temp;
}
System.out.println(answer);
}
}
πΈ μ½λ ν΄μ πΈ
- nμ΄ μ΅λ 100,000μ΄κ³ κ° λ‘νμ μ€λμ μ΅λ 10,000 μ΄λ―λ‘, μ΅λ μ€λμ μ΅λκ°μ 100,000 * 10,000 = 1,000,000,000 (10μ΅)μ΄λ€. λ°λΌμ int(μ΅λ 20μ΅)λ₯Ό μ¬μ©ν΄λ λλ€.
- λ¬Έμ μ μ νμκ°μ 2μ΄μ΄κ³ , μ΅μκ°μ μ¬μ©ν΄μΌ νλ€.
- λ§€λ² μ΅μκ°μ ꡬν΄μ€μΌ νλ©΄, O(n^2) == 10,000,000,000μΌλ‘ 100μ΅ν κ³μ°μΌλ‘ μ½ 100μ΄κ° μμλλ€.
- λ°λΌμ μ΅μκ°μ λ°λ‘ ꡬν΄μ€ νμκ° μλλ‘ μ λ ¬ν λ΄λ¦Όμ°¨μμΌλ‘ κ³μ°νλ€.
- μ€λ¦μ°¨μ μ λ ¬ ν μ΅λκ°μ μ°Ύλ λ°λ³΅λ¬Έμ λ€μͺ½μΌλ‘ μννλ€.
- μ λ ¬νμΌλ―λ‘ μΈλ±μ€ iλ‘ λμ€λ κ°μ νμ μ΅μκ°μ΄λ€.
- (μ΅μκ° * λ‘νμ κ°μ)μ μ΅λκ°μ μΆλ ₯νλ€.
πΈ end πΈ
- λ¬Έμ λ₯Ό μλͺ» νμ νκ³ DFSλ₯Ό μ¬μ©ν΄μΌνλ νμ°Έ κ³ λ―Όνλ€.
- λ¬Έμ νκ·Έκ° μ λ ¬, 그리λμΈκ±Έ λ³΄κ³ μμΌ νμ΄λ₯Ό νμ
ν μ μμλ€.
- answerμ μλ£νμ μΌλ¨ longμΌλ‘ λκ³ λ§μλλ°, κ³μ°ν΄λ³΄λ intλ‘λ κ°λ₯ν΄μ λ°κΏμ£Όμλ€.
- μ λ ¬νμΌλ―λ‘ (μ΅μκ° * λ‘νμ κ°μ)κ° ν λ²μ΄λΌλ answerλ³΄λ€ μμΌλ©΄ λ€λ κ²μ¬νμ§ μμλ λλ μ€ μμλ€.
- (μ΅μκ°)μ΄ λ무 μμμ μΌμμ μΌλ‘ λ μκ² λμ¬ μ μμ§λ§, (λ‘νμ κ°μ)κ° μ»€μ§λ©° λ€μ μ΅λκ°μ΄ κ°±μ λ μ μμΌλ―λ‘ μ λΆ νμΈν΄μΌ νλ€.
- νΉμ νμ΄ μ΄μ μ΄ νλ ΈμκΉ ν΄μ λ€λ₯Έ νμ΄λ€μ νμΈν΄λ΄€μμ§λ§, μμ μ΄μ λλ¬Έμ νλ¦°κ±°μλ€.
728x90