250x250
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- DP
- ๋ฆฌ๋์ค ํดํท
- js
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ๋ฐฑ์ค
- ์นด์นด์ค์ฑ์ฉ
- ์ฝํ
- ์ด๋ฏธ์ง ์์
- ์ด๋ถํ์
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- router v6
- ๋๋๊ทธ ์ด๋ฒคํธ
- ์ฝ๋ฉํ ์คํธ
- ๊ณผ์ ํ ์คํธ
- ์ฝ๋ ํฌ๋ฉง
- ์นด์นด์ค
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- TypeScript
- React
- icecandidate
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- custom hook
- ํ๋ก๊ทธ๋๋จธ์ค
- JavaScript
- ๋์ ๊ณํ๋ฒ
- Node.js
- Redux toolkit
- ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
Archives
- Today
- Total
๐ฅ dev-ruby
[ํ๋ก๊ทธ๋๋จธ์ค]์ ๊ตญ์ฌ์ฌ - ์๋ฐ์คํฌ๋ฆฝํธ | ์ด๋ถํ์ | Lv.3 ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋จธ์ค
[ํ๋ก๊ทธ๋๋จธ์ค]์ ๊ตญ์ฌ์ฌ - ์๋ฐ์คํฌ๋ฆฝํธ | ์ด๋ถํ์ | Lv.3
ruby_s 2022. 2. 12. 22:21728x90
๋ฐ์ํ
SMALL
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/43238
ํ์ด
function solution(n, times) {
times.sort((a, b) => a - b);
let min = times[0];
let max = n * times[times.length -1];
while(min <= max){
const mid = Math.floor((min + max) / 2);
const count = times.reduce((acc, curr) => acc + Math.floor(mid / curr), 0); // ํ ์ฌ๋๋น ๋ช๋ช
ํ ์ ์๋์ง
console.log(min, max, mid, count);
count >= n ? max = mid - 1 : min = mid + 1;
}
return min;
}
1. ์ด๋ถํ์์ ์ํด์๋ ์ ๋ ฌ๋ ๋ฐฐ์ด์ด ํ์ํ๋ค.
times.sort((a, b) => a - b);
2. ๊ฐ์ฅ ์ต์๋ก ๊ฑธ๋ฆฌ๋ ์๊ฐ(min)๊ณผ ์ต๋๋ก ๊ฑธ๋ฆฌ๋ ์๊ฐ(max)๋ฅผ ๋จผ์ ๊ตฌํด์ค๋ค.
let min = times[0];
let max = n * times[times.length -1];
3. (์ต์+์ต๋)/2๋ก ์๊ฐ์ ์ค๊ฐ๊ฐ(mid)์ ๊ตฌํ๋ค.
const mid = Math.floor((min + max) / 2);
4. times๋ฅผ ๋๋ฉด์ ๊ฐ ์ฌ์ฌ๊ด ํ ์ฌ๋๋น mid ์๊ฐ๋์ ๋ช๋ช ์ ์ฌ์ฌํ ์ ์๋์ง ๊ณ์ฐ(Math.floor(mid / curr))ํด์ ์ดํฉ์ ๊ตฌํ๋ค. (acc์ ๋์ ํด์ค)
const count = times.reduce((acc, curr) => acc + Math.floor(mid / curr), 0);
5. ๋ง์ฝ, mid์๊ฐ ๋์ ๊ฒ์ฌํ ์ ์๋ ์ธ์์ ์ด ์(count)๊ฐ ์ฃผ์ด์ง n๋ช ๋ณด๋ค ๋ง๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ,
- max๋ฅผ mid ์ด์ ์ผ๋ก ๋ง๋ค์ด ์ผ์ชฝ ๊ณต๊ฐ์ ํ์ ๊ณต๊ฐ์ผ๋ก ์ ํ๋ค.
n๋ช ๋ณด๋ค ์ ์ ๊ฒฝ์ฐ,
- min์ mid ๋ค์์ผ๋ก ๋ง๋ค์ด ์ค๋ฅธ์ชฝ ๊ณต๊ฐ์ ํ์ ๊ณต๊ฐ์ผ๋ก ์ ํ๋ค.
count >= n ? max = mid - 1 : min = mid + 1;
๊ทธ๋ผ ์ต์ข min๊ฐ์ด n๋ช ์ ์ฌ์ฌํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์ต์ ์๊ฐ์ด๋ค.
๋๋์
์ด๋ถํ์์ ๊ทธ๋ฅ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์กฐ์ ํด์ ํ์ํ๋ ์ฉ, ๋ฐฐ์ด์ ์๋ ๊ฐ์์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ๋ง ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ์๊ฐํ์๋๋ฐ, ์ด ๋ฌธ์ ๋ก ์ด๋ถํ์์ ์ด๋ป๊ฒ ํ์ฉํ๋ฉด ๋๋์ง ์ ๊ฒ ๊ฐ๋ค.
์ฒ์์๋ times ๋ฐฐ์ด๋ง์ผ๋ก ์ด๋ป๊ฒ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ํ์ ๊ณต๊ฐ์ ์ก์ ์ง ์๊ฐํด๋ดค๋๋ฐ..
๋ฌด์กฐ๊ฑด ์ฃผ์ด์ง ๋ฐฐ์ด์์ mid๊ฐ์ ๊ตฌํด์์์น๋ง ์กฐ์ ํ๋ ๊ฒ์ด ์๋, ๋ฌธ์ ๋ฅผ ํ์ฉํด์ ๋ด๊ฐ ์ง์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ง์ ํด์ฃผ๊ณ ํ์ํ ๊ณต๊ฐ์ ๋ฒ์๋ฅผ ์๊ฐํด๋ณด์. ๊ทธ๋ ๊ฒ ๋ด๊ฐ ์ ํ ๊ณต๊ฐ์์ ์ค๊ฐ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ์กฐ๊ฑด์ ๋ฐ์ ธ๋ณด๋ ์์ผ๋ก ํ๋ฉด ๋ ๊ฑฐ๋ค..!
728x90
๋ฐ์ํ
LIST