ํฐ์คํ ๋ฆฌ ๋ทฐ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌด์ง์ ๋จน๋ฐฉ ๋ผ์ด๋ธ
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 9. 11. 22:45[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/42891
[ํ์ด]
๋ฌธ์ ์ ํต์ฌ์ ์ด๋ถํ์์ ํตํด ํ์ ํ์ด ๋ช๋ฒ์งธ ๋์์ ๋ k+1์ด๊ฐ ๋๋์ง ์ฐพ์์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ์ ํ์ด [3, 1, 2]์ด๊ณ k๊ฐ 5๋ผ๋ฉด k+1์ธ 6์ด์ ์ด๋ค ๊ทธ๋ฆ์ ๋จน๋์ง ์ฐพ์์ผ ํฉ๋๋ค.
- 1ํ์ : [2, 0, 1] -> 3์ด ์ง๋จ
- 2ํ์ : [1, 0, 0] -> 5์ด ์ง๋จ
- 3ํ์ : [0, 0, 0] -> 6์ด ์ง๋จ
๋ฐ๋ผ์ 3ํ์ ์ 6์ด๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก 3ํ์ ์ ๊ฒ์ํ์ฌ 1๋ฒ ๊ทธ๋ฆ์ ๋จน๋๊ฒ์ ๊ตฌํ ์ ์์ต๋๋ค.
์ด๋ถํ์์ ์ฌ์ฉํ์ฌ k+1์ด ํฌํจ๋ ํ์ ์ ์ฐพ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ธฐ ์ธํ
- ์ต์ ํ์ ์ left = 1;
- ์ต๋ ํ์ ์ right = 6; (๋ชจ๋ ๊ทธ๋ฆ์ ์ดํฉ = 3 + 1 + 2)
์ด๋ถํ์ ๊ณผ์
- mid = (left + right)/2 = 3 => 3ํ์ ์์ ์๊ฐ์ 6์ด๋ฏ๋ก right = 2 ๋ก ๊ฐฑ์
- mid = 1 ์ด๋ฏ๋ก 1ํ์ ์์ ์๊ฐ์ 3์ด๋ฏ๋ก left = 2๋ก ๊ฐฑ์
- mid = 2 ์ด๋ฏ๋ก 2ํ์ ์์์๊ฐ์ 5์ด๋ฏ๋ก left = 3์ผ๋ก ๊ฐฑ์
- ์ด๋ถํ์์ด ์ข ๋ฃ๋๊ณ left = 3์ด๋ฏ๋ก 3ํ์ ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ k+1์ด ํฌํจ
๋ฐ๋ผ์ left - 1 (2) ํ์ ์ด ๋๋ํ ์๊ฐ์ 5์ด์ด๊ณ , 2ํ์ ์ด ๋๋ํ ํ์ ํ์ ์์ ์ํ food๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[ [ 3, 1 ] ]
๋ฐ๋ผ์ 6์ด์ผ๋๋ 1๋ฒ ํ์ ํ์ ๋จน๊ฒ๋ฉ๋๋ค.
[์ฝ๋]
function solution(food_times, k) {
var answer = -1;
let sum = food_times.reduce((acc, cur) => acc + cur);
if(sum < k) {
return answer;
}
// ์ต์ rotate 1, ์ต๋ rotate 6
let left = 1;
let right = sum;
while(left <= right) {
let mid = Math.floor((left + right)/2);
let time = 0;
food_times.forEach((i) => {
if(i <= mid) {
time += i;
} else {
time += mid;
}
});
if(time < k+1) {
left = mid + 1;
} else {
right = mid - 1;
}
}
let time = 0;
left--;
food_times.forEach((i) => {
if(i <= left) {
time += i;
} else {
time += left;
}
});
let foods = food_times.map((i, idx) => [i, idx+1]).filter((i) => i[0] > left);
for(let i=0;i<foods.length;i++) {
time++;
if(time === k+1) {
answer = foods[i][1];
break;
}
}
return answer;
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋คํธ ๊ฒ์ (0) | 2022.09.18 |
---|---|
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋ธ๋ก๊ฒ์ (0) | 2022.09.16 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์คํจ์จ (0) | 2022.09.05 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (0) | 2022.09.01 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์นด๋ ์ง ๋ง์ถ๊ธฐ (0) | 2022.08.31 |
- Total
- Today
- Yesterday
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์์ธ ํจํด
- ์ ์ญ ๋ณ์
- ํฌํฌ์ธํฐ
- ๋ฐฑ์ค javascript
- JavaScript
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๋ฐฑ์ค
- ์ฝ๋ฉํ ์คํธ
- http
- ํ๋กํ ์ฝ
- map
- fp
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋คํธ์ํฌ
- ํ๋กํผํฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- git
- ์ด๋ถํ์
- ๋ฐฑ์ค node.js
- ์นด์นด์ค ์ธํด
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- TDD
- ์๋ฐ
- Baekjoon
- ์ด์์ฒด์
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |