μκ° μ ν | λ©λͺ¨λ¦¬ μ ν | μ λ΅ λΉμ¨ |
1 μ΄ | 128 MB | 31.285% |
λ¬Έμ
κ΅κ°μ μν μ€ νλλ μ¬λ¬ μ§λ°©μ μμ°μμ²μ μ¬μ¬νμ¬ κ΅κ°μ μμ°μ λΆλ°°νλ κ²μ΄λ€. κ΅κ°μμ°μ μ΄μ‘μ 미리 μ ν΄μ Έ μμ΄μ λͺ¨λ μμ°μμ²μ λ°°μ ν΄ μ£ΌκΈ°λ μ΄λ €μΈ μλ μλ€. κ·Έλμ μ ν΄μ§ μ΄μ‘ μ΄νμμ κ°λ₯ν ν μ΅λμ μ΄ μμ°μ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λ°°μ νλ€.
- λͺ¨λ μμ²μ΄ λ°°μ λ μ μλ κ²½μ°μλ μμ²ν κΈμ‘μ κ·Έλλ‘ λ°°μ νλ€.
- λͺ¨λ μμ²μ΄ λ°°μ λ μ μλ κ²½μ°μλ νΉμ ν μ μ μνμ‘μ κ³μ°νμ¬ κ·Έ μ΄μμΈ μμ°μμ²μλ λͺ¨λ μνμ‘μ λ°°μ νλ€. μνμ‘ μ΄νμ μμ°μμ²μ λν΄μλ μμ²ν κΈμ‘μ κ·Έλλ‘ λ°°μ νλ€.
μλ₯Ό λ€μ΄, μ 체 κ΅κ°μμ°μ΄ 485μ΄κ³ 4κ° μ§λ°©μ μμ°μμ²μ΄ κ°κ° 120, 110, 140, 150μ΄λΌκ³ νμ. μ΄ κ²½μ°, μνμ‘μ 127λ‘ μ‘μΌλ©΄, μμ μμ²λ€μ λν΄μ κ°κ° 120, 110, 127, 127μ λ°°μ νκ³ κ·Έ ν©μ΄ 484λ‘ κ°λ₯ν μ΅λκ° λλ€.
μ¬λ¬ μ§λ°©μ μμ°μμ²κ³Ό κ΅κ°μμ°μ μ΄μ‘μ΄ μ£Όμ΄μ‘μ λ, μμ 쑰건μ λͺ¨λ λ§μ‘±νλλ‘ μμ°μ λ°°μ νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ μΆλ ₯
첫째 μ€μλ μ§λ°©μ μλ₯Ό μλ―Ένλ μ μ Nμ΄ μ£Όμ΄μ§λ€. Nμ 3 μ΄μ 10,000 μ΄νμ΄λ€. λ€μ μ€μλ κ° μ§λ°©μ μμ°μμ²μ νννλ Nκ°μ μ μκ° λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. μ΄ κ°λ€μ λͺ¨λ 1 μ΄μ 100,000 μ΄νμ΄λ€. κ·Έ λ€μ μ€μλ μ΄ μμ°μ λνλ΄λ μ μ Mμ΄ μ£Όμ΄μ§λ€. Mμ N μ΄μ 1,000,000,000 μ΄νμ΄λ€.
첫째 μ€μλ λ°°μ λ μμ°λ€ μ€ μ΅λκ°μΈ μ μλ₯Ό μΆλ ₯νλ€.
ν΄κ²°
key point,μ΄λΆνμ
- μ΄λΆνμμ νκΈ° μν΄μ λ°λμ μ λ ¬μ ν΄μ£Όμ΄μΌ νλ€.
- 0~end or 1~end+1 λ²μμμ νμν΄μΌ νλ€.
μ¬λ¬λ² νλ Έλλ° κ·Έ μ΄μ λ 8λ²μ§Έ μ€μ if( l >= r) return; λλ¬Έμ΄μλ€.
3
3 2 4
5
μ΄ κ²½μ°μ λ΅μ 1μ΄ μΆλ ₯λμ΄μΌλλλ° 0μ΄ μΆλ ₯λμλ€. midκ°μ΄ 1μ΄ λλ €λ©΄ l, r λͺ¨λκ° 1μ΄μ΄μΌνλλ° κ·Έ λ '='μ°μ°μ λλ¬Έμ κ±Έλ €μ 리ν΄λμκΈ° λλ¬Έμ μ΅λ midκ° 0μ΄μλ κ²μ΄λ€.
μ½λ
λ©λͺ¨λ¦¬ | μκ° |
2024 KB | 0ms |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
typedef long long ll;
int n, budget, arr[10005], ans;
void go(int l, int r) {
if (l > r) return;
int mid = (l + r) / 2;
ll sum = 0;
for (int i = 0; i < n; i++) {
if (mid >= arr[i]) {
sum += arr[i];
}
else sum += mid;
}
if (budget >= sum) {
ans = mid;
go(mid + 1, r);
}
else {
go(l, mid - 1);
}
}
int main(){
scanf("%d", &n);
ll sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
sum += arr[i];
}
scanf("%d", &budget);
sort(arr, arr + n);
if (sum <= budget) {
printf("%d", arr[n - 1]);
return 0;
}
go(0, arr[n - 1]);
printf("%d", ans);
return 0;
}
|
cs |
νκΈ°
μκ³ μλ€κ³ μκ°νλ μ΄λΆνμμμ λ§μ΄ νλ¦¬κ² λμ΄ μ λ§ λΉν©νμλ€. μκΉλ¨ΉκΈΈ!
'π₯ PS(Problem Solving) π₯ > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] #5397 ν€λ‘κ±° (0) | 2020.05.21 |
---|---|
[BOJ] #1912 μ°μν© (0) | 2020.05.11 |
[BOJ] #13414 μκ°μ μ² (0) | 2020.05.02 |
[BOJ] #1748 μ μ΄μ΄ μ°κΈ° 1 (0) | 2020.04.23 |
[BOJ] #1953 νλ°°λΆ (0) | 2020.04.21 |
λκΈ