π°ππππππππ/π±πππππππ
[λ°±μ€/Java] λ‘ν 2217
ν΄λ²λ
2023. 11. 9. 15:57
λ°μν
λ¬Έμ
https://www.acmicpc.net/problem/2217
2217λ²: λ‘ν
N(1 ≤ N ≤ 100,000)κ°μ λ‘νκ° μλ€. μ΄ λ‘νλ₯Ό μ΄μ©νμ¬ μ΄λ° μ λ° λ¬Όμ²΄λ₯Ό λ€μ΄μ¬λ¦΄ μ μλ€. κ°κ°μ λ‘νλ κ·Έ κ΅΅κΈ°λ κΈΈμ΄κ° λ€λ₯΄κΈ° λλ¬Έμ λ€ μ μλ 물체μ μ€λμ΄ μλ‘ λ€λ₯Ό μλ μλ€. ν
www.acmicpc.net
νμ΄
μλ₯Ό λ€μ΄ λ‘νκ° 10 20 20 30 μ΄λΌλ©΄
μ΅μ 10μΌ λ μ΅λ μ€λ = 40
μ΅μ 20μΌ λ μ΅λ μ€λ = 60
μ΅μ 30μΌ λ μ΅λ μ€λ = 30
μ΄λ―λ‘ μ΅λκ°μ 60μ΄κ³ μ΅μ 20μΌ λμ΄λ€.
κ·Έλμ λ‘ν λ°°μ΄μ μ λ ¬ν΄μ€ λ€μμ μ΅λκ°μ ꡬν΄μ€¬λ€.
package algorithm;
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));
// kκ°μ λ‘ν, μ€λ w -> w/k λ§νΌ κ±Έλ¦¬κ² λλ€.
// μ΄ λ‘νλ€μ μ΄μ©νμ¬ λ€μ΄μ¬λ¦΄ μ μλ 물체μ μ΅λ μ€λ
// λ‘ν λ€ μ μ¨λ λ¨
int num = Integer.parseInt(br.readLine());
int[] arr = new int[num];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int max = arr[0] * arr.length;
int currentMin = 0; // index
// 10 20 20 30 μ΄λ κ² λ°°μ΄ μ λ ¬μ ν΄μ£Όκ³
// 10μΌ λ μ΅λ 40
// 20μΌ λ μ΅λ 60
// 30μΌ λ μ΅λ 30 μ΄λ―λ‘ 60μΆλ ₯
while (currentMin < arr.length - 1) {
if (arr[currentMin] != arr[currentMin + 1]) {
int currentMax = arr[currentMin + 1] * (arr.length - currentMin - 1);
if (max < currentMax) {
max = currentMax;
}
}
currentMin++;
}
// arr.length > 1 μΌλλ₯Ό μ μΌμ.. κΈΈμ΄ νμΈ ν΄μ£ΌκΈ°
if (arr.length > 1 && (arr[arr.length - 1] != arr[arr.length - 2])) {
if (max < arr[arr.length - 1]) {
max = arr[arr.length - 1];
}
}
System.out.println(max);
}
}
μ λ΅
λ°μν