: ์ผ๋จ์ n ์์ด๋ค์ด 10์ 9์น์ด๋ฏ๋ก logN์ ์๊ฐ๋ณต์ก๋์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํจ.
์๋์ ๋ฌธ์ ์ ์์์์ ์์ด๊ฐ 5๋ช ์ด๊ณ , ๋นจ๊ฐ๋ณด์ 4๊ฐ , ํ๋๋ณด์ 7๊ฐ๋ผ๊ณ ํ๋ค. ์ด๋ป๊ฒ ์ด๋ถํ์์ผ๋ก ์ ๊ทผํ ์ง๋ฅผ ๋ชจ๋ฅด๊ฒ๋ค...
: ์ด์จ๋ ํ์์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ญ๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก์๊น???
๋์์ ์ ํด์ผ ํ๋ค!!
์งํฌ์ฌ์ผ๋ก ๋๋๋ ๊ฒ์ ๊ฐ์ฅ ๋ง์ ๋ณด์์ผ๋ก v[i] ๋ฅผ ๋๋๋ ๊ฒ์ด๋ค.
์์ดํฌ ์ฉ์ง๊ฐ ์๋ค๋ฉด ์ผ๋จ ๊ทธ๋ ค๋ณด์.
: ์ง๊ธ์ ๊ฒฝ์ฐ, ์ด๋ค ์์ผ๋ก ์ ๊ทผํ ์ง ์์์ด ์๋๋ค.
์๋์ ๊ทธ๋ฆผ์ ์งํฌ์ฌ์ด 4๊ฐ์ธ ๊ฒฝ์ฐ์ธ๋ฐ, ์ด ๋๋ ํ์์ด 3๋ช
์ด๋ฏ๋ก ๋ถ๊ฐํ๋ค.
์งํฌ์ฌ์ด 3๊ฐ์ผ ๋ 5๋ช
์ ์์ด๋ค์ด ๋ชจ๋ ๋ณด์์ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
: ํ๊ฒ ๋์์ ์ก๊ธฐ๊ฐ ๊ต์ฅํ ๊ณค๋ํ์ง๋ง, ํ์ ๋์์ ์ฐพ์์ผ ํ๋ค.
์ง๊ธ์ ๊ฒฝ์ฐ๋ ๊ฒฐ๋ก ์ ์ผ๋ก ์งํฌ์ฌ ์์ด๋ค ์ค์์ ๊ฐ์ฅ ๋ง์ ๋ณด์์ ๊ฐ์ง๊ณ ์๋ ์น๊ตฌ๊ฐ ๊ฐ์ง ๋ณด์์ด๋ผ๋ ๊ฒ์ด๋ค. ์ด๋ถํ์์ ํ๋ ๋ญ ํ๋ ๊ถ๊ทน์ ์ผ๋ก๋ ๋ณด์์ ๊ฐ์ง๊ณ ์๋ ๊ฐฏ์๊ฐ ์ต์ํ์ด ๋์ด์ผ ํ๋ค๋ ์ ์ด๋ฏ๋ก, ์งํฌ์ฌ์ ๋์์ผ๋ก ํด์ผ ํ๋ค.
ํ์ ๋์์ด ์ฐพ๊ธฐ ์ด๋ ค์ด ์ด์ ๋ ์งํฌ์ฌ์ ๊ฐ์ฅ ๋ง์ ๋ณด์์ ๊ฐ์ ธ๊ฐ ํ์์ธ๋ฐ, ๊ทธ๋ผ ๊ทธ ํ์์ ํ๋ช
๋๋ ๋๋ช
์ด ์๋๊น???????????? ๋ผ๋ ์๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ฉด์ ์ด๊ฑฐ ์ด๋ป๊ฒ ํธ๋๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋์๋ฐ...
: ๋ฌธ์ ๋ฅผ ๋ณด๊ณ , ์ด์จ๋ ์ฌ๋์ ์๋ ๋ณด์์ ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์.
๊ทธ๋์ ๋ด๊ฐ ์๊ฐํ ๊ฒ์ ์ด๋ ๋ค.
ํ์ฌ ์ฌ๋์ ์ 7, ๋ณด์์ ์ 5๊ฐ ์ด๊ธฐ ๋๋ฌธ์ (๋ณด์ : 7 1 7 4 4)
์ต๋ํ ๋ง์ ์ฌ๋๋ค์ด ๋ณด์์ ์ต๋ํ ์ชผ๊ฐ์ ์งํฌ์ฌ์ ๋ฎ์ถฐ์ผ ํ๊ธฐ ๋๋ฌธ์
์ ๊ฑฐ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ํด์ ๊ฐ์ฅ ํฐ์์ ๋ง์ ์ฌ๋์ ํฌ์ฌํ๋ ค๊ณ ํจ.
-> ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ๋ณต์กํ๊ณ , ์ฌ๊ท๋ฅผ ๋๋ฆฌ๋ฉด์ ๋ค์์ธ๋ฑ์ค๋ฅผ ์๊ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์
๊ต์ฅํ ๋ณต์กํด์ง.
์๋ฅผ ๋ค๋ฉด ์ฌ๋์ 15์ด๊ณ ๋๋จธ์ง๋ ๋์ผํ ๊ฒฝ์ฐ.
7์ 4๋ช
์ด ๋ถ๋ฐฐํ๊ณ , 7์ 4๋ช
์ด ๋ถ๋ฐฐํ๊ณ , 1์ ํ๋ช
๋ง ,
4๋ฅผ 2๋ช
์ด , 4๋ฅผ 2๋ช
์ด ์ด๋ ๊ฒ ๋ถ๋ฐฐ๊ฐ ๊ฐ๋ฅํจ..
- -> ์๋ชป๋ ์ ๊ทผ ๋ฐฉ๋ฒ....
์ผ๋จ ๋๋ 100000000 ์ด๊ธฐ ๋๋ฌธ์ logN์ ๋ฐฉ๋ฒ์ผ๋ก ํด์ผ ๊ฒ ๋ค๋ผ๋ ์๊ฐ์ ํจ.
ํฐ๋๋์ ์ฌ๊ธฐ์๋ ํ์ฌ๋์ด ๊ฐ์ง๋ ๋ณด์์ ๊ฐฏ์๋ฅผ ์ต์ํ์ผ๋ก ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์
์งํฌ์ฌ์ด ๋ช๊ฐ ์ผ๋? ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๊ณ ์งํํด์ผ ํ๋ค๊ณ ํจ.
์ด๋ป๊ฒ ํ๊ฒ์ธ๊ฐ?
์ด๋ถํ์์ ์ด์ฉ : ๋ฒกํฐ์ max๊ฐ์ right ๊ฐ์ผ๋ก ํ๊ณ , left ๋ฅผ 1๋ก ํ ํ, mid ๊ตฌํจ.
mid ๊ฐ์ผ๋ก ๋ชจ๋ ์์์ ๋ฐธ๋ฅ ๋๋ ๊ฐ๋ฉด์ ์งํ.. ์นด์ดํ
....
https://www.acmicpc.net/submit/2792/48013677
: ๋ฌธ์ ์ ์์๋๋ก ํ์์. -> ํ๋ฆผ.
: ๋ฌธ์ ์ ์์๋๋ก ํ์ง ์์.
์ฌ๋์ ์นด์ดํ
ํด์ ๋น๊ตํ๋ ํ๋ก์ธ์ค์, ์งํฌ์ฌ์ ๋ง์ฝ์ ๋ถ๋ฆฌํ๋ค๊ณ ํ๋ค๋ฉด?
, ๊ตณ์ด ๋๋จธ์ง ๊ฐ์ ์ด์ฉํด ์งํฌ์ฌ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ๋ง๋ค ํ์๊ฐ ์์.
๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ํด๋ณด๋ฉด,
7๊ฐ์ ๋ณด์์ ๋ณด์ 2๊ฐ๋ก ๋๋๋ค๊ณ ์๊ฐ์ ํ๋ฉด, ์ฌ๋์ 3๋ช
๋ฟ ์๋๋ผ,
๋๋จธ๊ธฐ 1๊ฐ์ ๋ณด์์ด ๋์ค๋ฏ๋ก, ์ฌ๋ ํ ๋ช
์ด ์ถ๊ฐ๋จ.
-> ๋๋ ์ ๋์ค๋ ์๋ ์ฌ๋์ ์ ์ด๊ณ , ๋๋จธ์ง๊ฐ ๋์ค๋ฉด ,
๋ฑ ํ ์ฌ๋์๊ฒ ์ ๋ฌํ ์ ์๋ ๊ฒ์ด๋ค!
-> ์งํฌ์ฌ์ ๊ธฐ์ค์ผ๋ก ํด์ ์ด๋ถ ํ์์ ์งํ ํ๋ฉด. ์๋ชป๋ ํ๋ก์ธ์ค๋ฅผ
์์ฑํ ๊ณ ๋ฏผ์ด ์์์.
1) logN์ผ๋ก ์ ๊ทผํด์ผ ๊ฒ ๋ค๋ ์๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ถํ์์ผ๋ก ์งํํด์ผ ๊ฒ ๋ค.
2) ํ๊ฒ ๋์์ ์ด๋ป๊ฒ ์ก์ ๊ฒ์ด๋? ๊ฐ ๊ด๊ฑด์ด๋ค.
: ์ฌ๊ธฐ์๋ ์งํฌ์ฌ์ ์ต์๊ฐ ๋๊ฒ ํด์ผํ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์งํฌ์ฌ์ ์ต์๋ก ํ์.
๋ ) ๋ณด์์ 3๊ฐ์ฉ ์ ํํ๋ฉด?
-> ์ด๋ ๊ฒ ์งํํ๋ฉด ๋๋๋ฐ, ํ์ ์ค ๋ณด์์ ๊ฐ์ง ๋ชปํ ์ ์๋ค๊ณ ๋ ํ๋ค.
์ด๋ฅผ ์ ๋
ํด์ ์์ฑํ๋ฉด ๋๋ค.
- ๋ฌธ์ ์ ํต์ฌ์ผ๋ก ๋ฐ๋ก ํ์ ์๋๋ก ํ์.
- ๋ฐ์ดํฐ ๋ฒ์๊ฐ ํฐ๊ฒ์ ํ์ธํ์ผ๋ฉด, ๋๋ ๋ง๊ณ long long์ผ๋ก ์ ์ธํ์.
- ๋ฌธ์ ๋ฅผ ์ ์ฝ์ด๋ณด์...
: ๋ฌธ์ ์์ ๋ณด์์ ๋ฐ์ง ๋ชปํ ์ฌ๋์ด ์์ ์ ์๋ค๊ณ ํจ.
๊ทธ๋ฐ๋ฐ ๋๋ sum == n์ผ๋ก๋ง ์ฒ๋ฆฌํ์.
-> ์๋ชป๋ ํ๋ก์ธ์ค
1) ์ฌ๋ ์๋ฅผ ๊ตฌํจ.
2) ์ฌ๋์์ n์ด ๋์ผํ ๊ฒฝ์ฐ, ์งํฌ์ฌ ์ธก์ ํจ.
: ์ด์ฐจํผ ๋ฐ์ ์ฉ ์ค์ฌ๋๊ฐ๋ฉด์ ์งํ์ ํ ๊ฒ์ด๋ฏ๋ก,
์ด๊ธฐ๊ฐ ๋ฒ์๋ฅผ 0 ~ max ๊ฐ์ผ๋ก ์ค์ ํด์ ์งํํ์.
์ฌ๋ฌ๊ฐ์ ๋ณด์์ ์๋ฅผ ์ด๋ป๊ฒ ๋๋ ์ผ ํ ์ง ๊ณ ๋ฏผ์ ํ์ง๋ง,
์ด๋ ๊ฒ ์ ๊ทผํ์ง ๋ง๊ณ , ์ต์ ์ ํด๋ฅผ ์ด๋ป๊ฒ ์ฐพ์๋ผ์ง๊ฐ ์ค์ํจ!
n๊ณผ ์ ๋ ฅ๊ฐ์ด 10์ต์ด๋ผ์ ์ด๋ถํ์ ํด์ผ ๊ฒ ๋ค ์๊ฐํจ.
๊ฒฐ๋ก : ๊ด๊ฑด์ ์ ๋ ฅ๊ฐ์ด ๋๋ฌด ๋ง๊ณ , ์ด๋ฅผ logN์ ๋น์ฉ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด์
ํ์์ ํด์ผ ํ๋ฏ๋ก, ์ด๋ถํ์์ผ๋ก ํ์ด์ผ ๊ฒ ๋ค๋ ์ฌ๋ก๋ฅผ ํด์ผ ํจ.
์ด๋ถ ํ์์ด๋ฏ๋ก ์ฒ์์ ์ค์ ํ start์ end๊ฐ์ ์ด๋ป๊ฒ ์ก์์ง์ ๋ํ
์ฌ๊ณ ๋ฅผ ํด์ผํจ.
๋ด๊ฐ ์๊ฐํ ํ์ด๊ฐ ์๊ตฌ์ฌ์ด ๋ค๋๋ ์ ๋ ฅ ์์ ๋ฅผ ํตํด ๋ต์ด ๋์ค๋์ง๋ฅผ
์๊ฐํ์.
์ด๋ถ ํ์์ผ๋ก ํ์ ๋ ๊ฐ๋ฅํ ์ด์ ๋
5 2
7
4
๋ก ์๊ฐ์ ํด๋ณด๋ฉด.
๋๋ด์๋์ ๊ฐ์ ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก ์ต์๊ฐ์ 1๋ก ๋๊ณ , ์ต๋๊ฐ์ 7๋ก ๋๊ณ
์๊ฐ์ ํ์. ์ถ๊ฐ์ ์ผ๋ก ์ฌ๋ ์ 5๋ช ์ ๋ง์ถฐ์ผ ํจ.
์ต์๊ฐ์ 4๋ก ํ๊ฒ ๋๋ฉด, ์๋จ.
: ์ผ๋จ ์ด๋ถ ํ์์ผ๋ก ํ๋ ค๊ณ ํ๋๋ฐ
4 25 ์ฌ๋ : 5
๋ผ๊ณ ํ๋ฉด ์ด๋ป๊ฒ ํ ๊ฑด๋ฐ?
6์ผ๋ก ๋๋ ์ผ
25 / 6 -> 4๊ฐ ๋จ.
๊ทธ๋ผ
4 / 6 -> 0์ธ๋ฐ?
์ด ๋ถ๋ถ์ ๊ณ ๋ คํด์ผ ํจ.
: ๋ฌธ์ ์ ํ๋ฆ๋๋ก ์์ฑํด ๋๊ฐ๋ ค๊ณ ํ๋ฉด...
์์์ ๋นจ๊ฐ ๋ณด์์ด 4๊ฐ (RRRR), ํ๋ ๋ณด์์ด 7๊ฐ (BBBBBBB) ์์๊ณ , ์ด ๋ณด์์ 5๋ช ์ ์์ด๋ค์๊ฒ ๋๋์ด ์ฃผ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์. RR, RR, BB, BB, BBB๋ก ๋ณด์์ ๋๋์ด์ฃผ๋ฉด ์งํฌ์ฌ์ 3์ด ๋๊ณ , ์ด ๊ฐ๋ณด๋ค ์๊ฒ ๋๋์ด ์ค ์ ์๋ค.
: ๋ด๊ฐ ์งํํ๋ ค ํ๋ ์ฝ๋๋ 5๋ช
๊ณผ ๋นจ, ํ ์ธ์์๋ฅผ ๋น๊ตํ๋ ค๊ณ ํ๋๋ฐ,
์ด๋ ๊ฒ ํ๋๋ผ๋ ์งํฌ์ฌ์ ์ต์๊ฐ์ ๊ตฌํ ์ ์์
๊ทธ๋ฆฌ๊ณ rr, rr, bb, bb, bbb ๋ผ๊ณ ํ๋๋ฐ,
๊ทธ๋ฌ๋ฉด ๋ต์ 2๊ฐ ์๋๊น? ์๊ฐ๋๋๋ฐ ,
์ฝ๋์ ๋ฌธ์ ์์ ์ฒ๋ฆฌํ ๊ฒ์ด ์ผ์น๊ฐ ์๋จ....
๋๋จธ์ง๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ๋ ์ฌ๋์ ์นด์ดํ ํ ๊น? ์ ๋ํด ์๊ฐ์ ํด๋ณผ์ ์์.
๋ฐ๋์ ๋ฌธ์ ์ ์ค๋ช ๋๋ก ํ๋ ค๊ณ ํ์ง ๋ง์์ผ ํจ!
๋๋จธ์ง๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ์ ์นด์ดํ ์ ํ๋ค๊ณ ํ๋ค๋ฉด?
์์ 1๋ฒ๊ณผ ์์ 2๋ฒ์์ ํ์ธํด๋ณด์.
์์ 1 ๋ฒ : 7, 4 -> 3 ์ผ๋ก ๋๋ ? 2(๋ชซ) + 1(๋๋จธ์ง) ์นด์ดํ , 1(๋ชซ) + 1(๋๋จธ์ง) -> 5๋ช ์ ์ฌ๋์ด ๋์ด.
์์ 2๋ฒ : 7, 1, 7, 4 , 4 ๋ฅผ 4๋ก ๋๋ ?
1(๋ชซ) + 1(๋๋จธ์ง, 3์ด์ง๋ง, 1 ์นด์ดํ ) , 0(๋ชซ), 1 ์นด์ดํ ~~
-> 7๋ช ์ ์ฌ๋์ด ๋์ด.
#include <iostream>
#include <vector>
using namespace std;
#include <algorithm>
long long n, m;
bool check(vector<long long>&v , long long mid)
{
// 8๋ช
์ ์์ด๋ค์ด๋ผ๋ฉด?
int cnt = 0;
for (int i = 0; i < v.size(); ++i)
{
cnt += v[i] / mid;
if (v[i] % mid) ++cnt;
}
// ์
๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ์ฌ๋์ ์์
// ๊ณ์ฐ ํ์ ์๋ฅผ ๋น๊ตํด์ผ ํ ๋ฏ?
return n >= cnt;
}
int main()
{
cin >> n >> m;
vector<long long>v(m);
for (int i = 0; i < m; ++i)
{
cin >> v[i];
}
// ํ ํ์์ ์ค๋ก์ง ํ๋์ ์์์ ๋ณด์๋ง
// ๊ฐ์ ธ๊ฐ ์ ์์.
// ๋ณด์ ์ค์์ ๊ฐ์ฅ ์์ ๊ฒ์ด.
// ๋๋์ ์๋ ๊ฐ์ฅ ๋์ ์์.
// 1 ~ 4
// for๋ฌธ์ผ๋ก 1 ~ 4๊น์ง ๋๋ฆฌ๊ธฐ์๋
// n์ ์๊ฐ ์ญ์ต, m ์ 30๋ง์ด๋ฏ๋ก.
// ํจ์จ์ ์ผ๋ก ์ ๊ทผํด์ผ ํจ.
// n์ด ์ญ์ต์ด๊ณ ,
// ์
๋ ฅ๊ฐ์ด 1 ~ ์ญ์ต์ธ๋ฐ,
// ๋ง์ฝ์ 1์ต์ด ์ต์๊ฐ์ด ๋ผ๋ฉด.
// 1 ~ 1์ต๊น์ง , ์ญ์ต๋ช
์ ์ฌ๋์ ๋๋ฆฌ๋ฉด์ ์ฒ๋ฆฌํ๊ธฐ์๋ ์ณ์ง ๋ชปํจ.
//==
// ์ฒ๋ฆฌ
// ๋ณด์a : 4 ๊ฐ, ๋ณด์ b : 7๊ฐ
// ๋๋ ์๋ : 1 ~ 4
// 5๋ช
์ ์ฌ๋์ผ๋ก ๋๋
long long r = *max_element(v.begin(), v.end());
long long max = 999999999;
long long l = 1;
while (l <= r)
{
long long mid = (l + r) / 2;
// ์ฌ๋ ์ธ์์๊ฐ ์ผ์นํ๋ค๋ฉด
if (check(v, mid))
{
max = min(max, mid);
r = mid - 1;
}
// ์ฌ๋ ์๊ฐ ๋ ์ ๋ค๋ฉด
else
{
l = mid + 1;
}
}
cout << max << endl;
}