๋ฌธ์
<๋ฌธ์ ์ค๋ช >
n๋ช ์ด ์ ๊ตญ์ฌ์ฌ๋ฅผ ์ํด ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ฐ ์ ๊ตญ์ฌ์ฌ๋์ ์๋ ์ฌ์ฌ๊ด๋ง๋ค ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ค๋ฆ ๋๋ค.
์ฒ์์ ๋ชจ๋ ์ฌ์ฌ๋๋ ๋น์ด์์ต๋๋ค. ํ ์ฌ์ฌ๋์์๋ ๋์์ ํ ๋ช ๋ง ์ฌ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์์ ์ ์๋ ์ฌ๋์ ๋น์ด ์๋ ์ฌ์ฌ๋๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ๋นจ๋ฆฌ ๋๋๋ ์ฌ์ฌ๋๊ฐ ์์ผ๋ฉด ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๊ทธ๊ณณ์ผ๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์๋ ์์ต๋๋ค.
๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๋ก ํ๊ณ ์ถ์ต๋๋ค.
์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋ ์ n, ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ด๊ธด ๋ฐฐ์ด times๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
<์ ํ ์กฐ๊ฑด>
- ์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋์ 1๋ช ์ด์ 1,000,000,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ 1๋ถ ์ด์ 1,000,000,000๋ถ ์ดํ์ ๋๋ค.
- ์ฌ์ฌ๊ด์ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
<์ ์ถ๋ ฅ ์>
n | times | return |
6 | [7, 10] | 28 |
https://programmers.co.kr/learn/courses/30/lessons/43238
๋ฌธ์ ํ์ด
์ด๋ถ ํ์์ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ ์ฌ์ฌํ๋ ์๊ฐ์ min์ 1, max๋ ์ ์ผ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฌ์ฌ๊ด์ด ๋ชจ๋ ์ฌ๋์ ์ฒ๋ฆฌํ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค. ๋ฐ๋ผ์ max๋ (times ์ค ๊ฐ์ฅ ํฐ ์์ * n)์ด ๋ฉ๋๋ค.
์ด๋ค ์๊ฐ์ด ์ฃผ์ด์ก์ ๋, ์ฃผ์ด์ง ์๊ฐ์ ์ ๊ตญ์ฌ์ฌํ ์ ์๋ ๋ชจ๋ ์ฌ๋์ ์๋ฅผ ํฉ์ณ people_sum์ ์ ์ฅํฉ๋๋ค.
์ด people_sum์ด n๋ณด๋ค ์๋ค๋ฉด ์ ๋ต์ mid๋ณด๋ค ํฌ๋ฏ๋ก min = mid + 1; ์ ํฉ๋๋ค. ๋ฐ๋๋ก people_sum์ด n์ด์์ด๋ผ๋ฉด ์ ๋ต์ด mid๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฏ๋ก max = mid - 1; answer = mid; ๋ฅผ ํฉ๋๋ค.
min์ด max๋ณด๋ค ์ปค์ง ๋๊น์ง ์์ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
์์ค์ฝ๋
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
|
// ์
๊ตญ์ฌ์ฌ
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(int n, vector<int> times) {
long long answer, people_sum;
long long min = 1, max, mid;
max = *max_element(times.begin(), times.end()) * (long long)n;
answer = max;
while (min <= max) {
people_sum = 0;
mid = (min + max) / 2;
for (int i = 0; i < times.size(); i++)
people_sum += mid / times[i];
if (people_sum < n) {
min = mid + 1;
}
else {
max = mid - 1;
answer = mid;
}
}
return answer;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์กฐ์ด์คํฑ (0) | 2021.01.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฒด์ก๋ณต (0) | 2021.01.10 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ํ๋ฆฐํฐ ํ์ด (0) | 2020.08.16 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ ํ์ด (0) | 2020.08.14 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๊ธฐ๋ฅ๊ฐ๋ฐ ํ์ด (0) | 2020.08.13 |