๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 43238] ์
๊ตญ์ฌ์ฌ (Javascript)
โ๏ธIdea Sketch
2021-07-13
1. ๋ฌธ์ ์ดํด
- ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๊ฐ (sum)
- ๊ฐ์ฅ ์์ ์๋ ์ฌ๋์ ๋น์ด ์๋ ์ฌ์ฌ๋๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์
- ๋ ๋นจ๋ฆฌ ๋๋๋ ์ฌ์ฌ๋๊ฐ ์์ผ๋ฉด ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ฌ์ฌ๋ ์ด๋!!!
2. ๋ก์ง
- ์ฌ์ฌ ๋ฐ๋ ๋ฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ sum
- ์ฌ์ฌ๊ฐ ๋ ๋นจ๋ฆฌ ๋๋๋ ๊ณณ์ ๋ฐฐ์ ํด์ค์ผํจ --> ์ ๋ ฌ?!
- times๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
3. ๋ก์ง ์ฐฌ์ฐฌํ ๋ฏ์ด๋ณด๊ธฐ..
- 0๋ช , 0๋ถ, [7, 10] --> 2๋ช , 7๋ถ, [0, 3]
- ์ฌ์ฌ๋ ์๊ฐ ์ค ๊ฐ์ฅ ์์ ์๊ฐ๋งํผ ๋นผ์ค ([7, 10] ์ค์ 7์ด ๊ฐ์ฅ ์์ผ๋ฏ๋ก ์ ์ฒด -7, sum์ +7ํ์ฌ 7๋ถ)
- 0๋ถ์ธ ์ฌ์ฌ๋๊ฐ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์ฌ์ฌ๋์ด๋ฏ๋ก ๋ฐ๋ก ์ฌ๋ ํฌ์ [7, 3]
- ์ฌ์ฌ๋ ์๊ฐ ์ค ๊ฐ์ฅ ์์ ์๊ฐ๋งํผ ๋นผ์ค ([7, 3]์์ 3์ด ๊ฐ์ฅ ์์ผ๋ฏ๋ก ์ ์ฒด -3, ์ ์ฒด ์๊ฐ์ +3ํ์ฌ 10๋ถ)
- 0๋ถ์ธ ์ฌ์ฌ๋๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ ์ฌ์ฌ๋๊ฐ ์๋๋ฏ๋ก ๋น๊ต
- [4, 0] ์์ 4+7 < 10 ์ด๋ฏ๋ก ๋๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ์ ๋ฆฌ [4, 10]
- ๊ฐ์ฅ ์์ ์๊ฐ 4๋ถ๋งํผ ๋นผ์ค [0, 6] ์ด 11+4 14๋ถ์งธ
- ๊ฐ์ฅ ๋น ๋ฅธ ์ฒซ๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ๋น์์ผ๋ฏ๋ก ๋ฐ๋ก ํฌ์ [7, 6]
4. ๋ก์ง ์์
- table์ Math.min(โฆtable)์ผ๋ก ๊ฐ์ฅ ์์ ์๊ฐ์ ๋นผ์ค ํ์ ์์!!
- table์ ์์์๊ฐ์ ๋์ ํ๋ฉด ๋จ!!
2021-07-13
1. table์ด๊ธฐ๊ฐ === times๋ก ์์
โ๏ธ์์ค์ฝ๋
2021-07-13 ์ ํ์ฑ 33.3์
function solution(n, times) {
times.sort((a, b) => a-b);
let table = Array.from({length: times.length}, () => 0);
DFS(n, table);
function DFS(n, table) {
if (n === 0) return;
let minIndex = 0;
let min = Number.MAX_SAFE_INTEGER;
let newTable = table.map((v, i) => {
v = v + times[i];
if (v < min) [min, minIndex] = [v, i]
return v;
});
table[minIndex] += times[minIndex];
DFS(--n, table)
}
return Math.max(...table);
}