Tags
- BFS
- LV2
- sort
- ๊ทธ๋ํ ์ด๋ก
- ๋ฐฑํธ๋ํน
- queue
- greedy
- ๊น์ด ์ฐ์ ํ์
- stack
- BOJ
- ์ ๋ ฌ
- ์ํ
- Python
- DP
- PGM
- dfs
- Brute Force Algorithm
- Java
- ์ ์๋ก
- ์๋ฎฌ๋ ์ด์
- Study
- ๊ต์ฌ
- ๋๋น ์ฐ์ ํ์
- ์๋ฃ๊ตฌ์กฐ
- SpringBoot
- ๊ตฌํ
- CodingTest
- ๋ฌธ์์ด
- Dynamic Programming
- ๊ทธ๋ํ ํ์
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2512 : ์์ฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n๊ฐ์ ์ซ์์ ํฉ์ด m๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค. ๊ทธ ์ค ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
- ์ซ์๋ค์ ํฉ์ด m๋ณด๋ค ์๋ค๋ฉด, ๊ธฐ์กด ์ซ์๋ค ์ค ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
- ์ซ์๋ค์ ํฉ์ด m๋ณด๋ค ํฌ๋ค๋ฉด, ์ต๋๊ฐ ์ปคํธ๋ผ์ธ์ ๋ง๋ค๊ณ ํฉ์ด ์ต๋๊ฐ ๋ ๋์ ์ปคํธ๋ผ์ธ์ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.Scanner;
public class Main {
private static int sum(int[] arr, int max) {
int sum = 0;
for (int i : arr) {
if (i > max){
sum += max;
}
else sum += i;
}
return sum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int m = sc.nextInt();
if (sum(arr, 100_000) <= m) {
int max = 0;
for (int i : arr) {
if (i > max)
max = i;
}
System.out.println(max);
}
else {
int l = 1, r = 100_000, mid = -1;
while (l <= r) {
mid = (l+r)/2;
int sum = sum(arr, mid);
if (sum <= m)
l = mid + 1;
else
r = mid - 1;
}
System.out.println(r);
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ฐฐ์ด์ ํฉ์ ๋ฐํํ๋ sum ๋ฉ์๋๋ ๋ฐฐ์ด๊ณผ ์ปคํธ๋ผ์ธ์ ์ ๋ ฅ๋ฐ์ ํฉ์ ์ถ๋ ฅํ๋ค.
- ๋ฐฐ์ด์ ํฉ์ด m๋ณด๋ค ์๋ค๋ฉด, ๊ธฐ์กด ์ซ์๋ค ์ค ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
- ๋ฐฐ์ด์ ํฉ์ด m๋ณด๋ค ํฌ๋ค๋ฉด, ์ด๋ถํ์์ ํตํด ํฉ์ด m๋ณด๋ค ์์ ์ต๋๊ฐ์ด ๋ ๋์ ์ปคํธ๋ผ์ธ์ ์ฐพ๋๋ค.
๐ธ end ๐ธ
- ์ค๋๋ง์ ์ด๋ถํ์์ ์ฌ์ฉํ๋ ค๋ ๋ง์ด ์ด๋ ค์ ๋ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์ ์์ ์ด๋ถํ์์ ์ด๋ป๊ฒ ํ์ฉํด์ผํ๋์ง๋ ์ ์บ์นํด์ ํ์ดํ๋๋ฐ, ํ์ ์ข
๋ฃ์กฐ๊ฑด์ ์ ์ ํ์ง ๋ชปํด์ 2๋ฒ ํ๋ฆฌ๊ฒ ๋์๋ค.
- ํนํ ์ต์ข ์ผ๋ก mid๋ฅผ ์ถ๋ ฅํ๋๊ฒ ์๋๋ผ r์ ์ถ๋ ฅํด์ผํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2559 : ์์ด (0) | 2023.01.12 |
---|---|
BOJ_25304 : ์์์ฆ (0) | 2023.01.12 |
BOJ_2407 : ์กฐํฉ (0) | 2023.01.10 |
BOJ_10974 : ๋ชจ๋ ์์ด (0) | 2023.01.10 |
BOJ_1213 : ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2023.01.10 |