https://school.programmers.co.kr/learn/courses/30/lessons/43238
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ3 ๋ฌธ์ .
๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ด์งํ์์ผ๋ก ํ์ด์ผ๊ฒ ๋ค๋ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ธฐ ์ด๋ ค์ ใ ใ กใ
์ค๋ ์๋กญ๊ฒ ๋ฐฐ์ด ๊ฒ
js ๋ฐฐ์ด์์ ์ต๋๊ฐ ์ฐพ๊ธฐ : Math.max(...times)
๋ฐฐ์ด ์์ ...์ ๋ถ์ฌ์ผ ํจ.
Math.max()๋ ๋ฐฐ์ด์ ์ง์ ๋ฐ์ ์ ์์ผ๋ฏ๋ก ์ ๊ฐ ์ฐ์ฐ์๊ฐ ํ์โผ๏ธ
โ ๏ธ ์ฃผ์์ 1.
์ด๋ถํ์ ํ, ๋ต์ด ๋์ถ๋์์ง๋ง ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์ฌ๋ฌ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก
right-left๊ฐ ์ถฉ๋ถํ ์์ง ์๋ค๋ฉด ๋ ์์ ์๋ฅผ ์ฐพ์ ํ์ํด์ผ ํฉ๋๋ค.
(์์ : left-20, mid-21, right-23 ์ธ ๊ฒฝ์ฐ์์ ๋ต์ด 20๊ณผ 21 ๋ชจ๋ ๊ฐ๋ฅํ ์ ์์ -> ์ต์๊ฐ์ ์ฐพ์์ผ ํจ!)
๋ฐ์ฌ๋ฆผ ๋ฌธ์ ์ธ์ง..
์ด๊ฑธ ๋์ณ์ ํ๋ฆผ ใ ใ
โ ๏ธ ์ฃผ์์ 2.
๋ ๊ณ ๋ คํด์ผ ํ ์ ์, ํ ์ผ ์ต๋๊ฐ์ด ํฌ๊ธฐ ๋๋ฌธ์
๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์ ํฉ์ ๊ตฌํ ๋ -> int ๋ฒ์ํ์ ๋์ด๊ฐ์ง ์๋๋ก, ์ด๋ ์ ์์ ์ค๋จ์์ผ์ผ ํ๋ค.
๋์ ํ์ด
function solution(n, t) {
let answer = 0;
let managers = t.length;
let times = t.map(Number);
// (์๊ฐ / ์์์๊ฐ) ์ ์ดํฉ = ์ฌ์ฌ๊ฐ๋ฅํ ์ฌ๋ ์
let left = 1; let right = Math.max(...times) * n;
console.log(right)
let mid = 0;
let sumPeople = 0;
while(left <= right){
mid = Math.floor((left+right)/2);
for(let i=0; i<managers; ++i){
sumPeople += Math.floor(mid/times[i]);
if(sumPeople>n) break;
}
if(n === sumPeople) {
if(right-left <= 1) return mid;
right = mid-1;
}
if(n <= sumPeople) {
right = mid-1;
answer = mid;
}
else left = mid + 1;
sumPeople = 0;
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.0 : ์ด์ง์ ๋ํ๊ธฐ (0) | 2025.02.11 |
---|---|
[Javascript/PGS] Lv.0 : ์นํจ ์ฟ ํฐ (0) | 2025.02.11 |
[Javascript/PGS] Lv.2 : ํ ์ธ ํ์ฌ (์ฌ๋ผ์ด๋ฉ ์๋์ฐ) (0) | 2025.02.06 |
[C++/PGS] Lv.0 : ๋ฑ์ ๋งค๊ธฐ๊ธฐ (0) | 2025.01.13 |
[C++/PGS] Lv.3 : ์ต๊ณ ์ ์งํฉ (๋ฒกํฐ, ์ํ) (0) | 2025.01.07 |