[Silver II] ์ฒด์ธ - 2785
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 315992 KB, ์๊ฐ: 1892 ms
๋ถ๋ฅ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ ๋ ฌ
๋ฌธ์ ์ค๋ช
ํฌ์์ด๋ ๊ทธ์ ๋ค๋ฝ๋ฐฉ์์ N๊ฐ์ ์ฒด์ธ์ ์ฐพ์๋ค. ๊ฐ๊ฐ์ ์ฒด์ธ์ ๋ช ๊ฐ์ ๊ณ ๋ฆฌ๋ก ์ฐ๊ฒฐ๋์ด ์๋๋ฐ, ๊ฐ๊ฐ์ ๊ณ ๋ฆฌ๋ ์ต๋ ๋ ๊ฐ์ ์ธ์ ํ ๊ณ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋ค. ๊ฐ๊ฐ์ ๊ณ ๋ฆฌ๋ ์ด๊ณ ๋ซ์ ์ ์๋ค. ๊ทธ๋์, ์ฒด์ธ์ ๋ถ๋ฆฌํ๊ฑฐ๋ ๋ ์ฒด์ธ์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ๊ธด ์ฒด์ธ์ผ๋ก ๋ง๋ค ์ ์๋ค. ํฌ์์ด๋ ๊ฐ๋ฅํ ํ ์ ์ ๊ณ ๋ฆฌ๋ฅผ ์ด๊ณ ๋ซ์์, ๋ชจ๋ ์ฒด์ธ์ ํ๋์ ๊ธด ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด, ํฌ์์ด๊ฐ ์ธ ๊ฐ์ ์ฒด์ธ์ ๊ฐ์ง๊ณ ์๊ณ , ๊ฐ ์ฒด์ธ์ด ๊ณ ๋ฆฌ ํ๋๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค๋ฉด, ๊ทธ ์ค ํ๋๋ฅผ ์ด์ด์ ๋๋จธ์ง ๋ ๊ฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ซ์ผ๋ฉด ๋๋ค.
์ฒด์ธ์ ๊ฐ์์ ๊ฐ๊ฐ์ ์ฒด์ธ์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง๋ฉด, ํ๋์ ๊ธด ์ฒด์ธ์ผ๋ก ๋ชจ๋ ์ฒด์ธ์ ๋ฌถ๊ธฐ ์ํด ํฌ์์ด๊ฐ ์ด๊ณ ๋ซ์์ผํ ์ต์ํ์ ๊ณ ๋ฆฌ ์๋ฅผ ์ฐพ์๋ผ.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ฒด์ธ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ N (2 ≤ N ≤ 500000)์ด ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค์๋ ๊ฐ๊ฐ์ ์ฒด์ธ์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ N๊ฐ์ ์์ ์ ์ Li(1 ≤ Li ≤ 1000000)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ํ์ํ ๊ณ ๋ฆฌ์ ์ต์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
int n = sc.nextInt(); // ์ฒด์ธ์ ๊ฐ์
int min = 0; // ์ต์ํ์ ๊ณ ๋ฆฌ ์
for (int i = 0; i < n; i++) {
int length = sc.nextInt();
list.add(length);
}
Collections.sort(list);
while (list.size() > 1) {
list.set(0, list.get(0) - 1);
list.remove(list.size() - 1);
if (list.get(0) == 0)
list.remove(0);
min++;
}
System.out.println(min);
}
}