์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ค์ฝํ
- js ์ค์ฝํ
- js
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๊ณ
- app router emotion
- ๊ตฌ๋ฆํค
- js ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- ๋ฐฑ์ค 2108 ์๋ฐ์คํฌ๋ฆฝํธ
- emtion app router
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์์ถ
- suspense ๋์์๋ฆฌ
- suspense react-query
- ์นด์นด์ค ์ฝํ
- suspense ๋น๋๊ธฐ
- ๋ฆฌ์กํธ์ฟผ๋ฆฌ suspense
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- ์ฌ์ฉ์ฑ ๊ฐ์
- ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- ๋ฐฑ์ค 1339๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐฑ์ค 1339๋ฒ nodejs
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
- ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ
- emotion RSC
- suspense ๋ณ๋ชฉํ์
- next13 emotion
- ์ต์ ๋์ฒด์ด๋
- js ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 1339๋ฒ js
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 2108 nodejs
- Today
- Total
Lennon FE
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ์ ๊ตญ์ฌ์ฌ ๋ณธ๋ฌธ
https://programmers.co.kr/learn/courses/30/lessons/43238?language=javascript
const binarySearch = (times, n) => {
let left = 0;
let right = n * times[times.length - 1];
let middle, people;
while(left <= right) {
middle = Math.floor((left + right) / 2);
people = times.reduce((prev, cur) => prev + Math.floor(middle/cur), 0);
if(people >= n) {
right = middle - 1;
} else {
left = middle + 1;
}
}
return left;
}
function solution(n, times) {
times = times.sort((a,b) => a-b);
return binarySearch(times,n);
}
์ด๋ถํ์ ๋ฌธ์ ์ด๋ค.
์ ๋ ฅ์ ์๋ก๋ค๋ฉด ์ต์์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก ์ต์๊ฐ(left)๋ 1๋ก ๋๊ณ , ์ต๋๊ฐ์ ์ ๋ ฌ๋ times๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ์ ์ธ์์๋ฅผ ๊ณฑํ ๊ฐ์ ๋ฃ์ด์ฃผ์. right = 10 * 6 = 60
๊ทธ ํ while๋ฌธ์ ๋๋ฉฐ ์ด๋ถ ํ์์ ํ๋ฉด๋๋ค.
n = 6, times = [7, 10]
์ฒซ ๋ฒ์งธ ๋ฐ๋ณต
middle๊ฐ => Math.floor((0+60)/2) => 30
people๊ฐ => Math.floor(30/7) + Math.floor(30/10) => 7
7์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง n๊ฐ๋ณด๋ค ํฌ๋ฏ๋ก right๊ฐ์ middle - 1 ๊ฐ์ผ๋ก ์ง์ ํด์ค๋ค.
๋ ๋ฒ์งธ ๋ฐ๋ณต
middle๊ฐ => Math.floor((0+29)/2) => 14
people๊ฐ => Math.floor(14/7) + Math.floor(14/10) => 3
3์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง n๊ฐ๋ณด๋ค ํ์ ํ ์์ผ๋ฏ๋ก left๊ฐ์ middle + 1๋ก ๋ฐ๊ฟ์ค๋ค.
์ธ ๋ฒ์งธ ๋ฐ๋ณต
middle๊ฐ => Math.floor((15+29)/2) => 22
people๊ฐ => Math.floor(22/7) + Math.floor(22/10) => 5
3์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง n๊ฐ๋ณด๋ค ํ์ ํ ์์ผ๋ฏ๋ก left๊ฐ์ middle + 1๋ก ๋ฐ๊ฟ์ค๋ค.
.
.
.
์ ๋ต์ด ๊ตฌํด์ง ๋๊น์ง ๋ฐ๋ณตํ๋ฉด left๊ฐ์ด right๊ฐ๊ณผ ๊ฐ์์ง๊ฑฐ๋ ๋์ ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ(์ต์์๊ฐ)์ ๊ตฌํ ์ ์๋ค.
์ ๋ต์ด 30์ด์ด๋ ๋์ง๋ง left >= right๊น์ง ๋ฐ๋ณตํ๋ฏ๋ก ์ต์์๊ฐ์ ๊ตฌํ ์ ์์
'๐ฅ Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ๋ก๋ - ์๋ฐ์คํฌ๋ฆฝํธ(js) (0) | 2022.03.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (js) (0) | 2022.02.10 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ์ด์ค์ฐ์ ์์ํ (js) (0) | 2022.02.03 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ๋ถ๋ ์ฌ์ฉ์ (js) (0) | 2022.02.03 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ๋จ์ ์นด๋ฉ๋ผ (js) (0) | 2022.01.30 |