https://school.programmers.co.kr/learn/courses/30/lessons/340212#
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ2.
์ ๋ต๋ฅ 42%์ธ PCCP ๊ธฐ์ถ์ด๋ค
๋ค์ ๋ฌ์ PCCP ๋์ ํด๋ณผ๊น ํด์ ๊ธฐ์ถ์ ํ์ด๋ณด์๋ค!
์ฒ์์ limit ๋ฒ์๊ฐ ๋๋ฌด ํฌ๊ธธ๋, ์ด๊ฑฐ ์ค๋ง ์ด๋ถํ์...?! ์ด๋ฌ๋ฉด์ ํ์๋๋ฐ
์ญ์๋ ์ด์ง ํ์ ์ ํ์ ๋ฌธ์ ๊ฐ ๋ง์๋ค.
์์ฃผ ํธ๋๊น ์ฌ์ฌ ๋ฌธ์ ์ ํ์ด ๋์ ๋ณด์ด๋๋ฏ ๐
while ์ข ๋ฃ ์กฐ๊ฑด, left / right ๊ฐฑ์ , answer ๊ฐฑ์ ๋ฑ ์ ๊ฒฝ์จ์ผํ ๋ถ๋ถ์ด ๋ง์๋ค!!!
ํนํ ๋์ด๋, ์์ ์๊ฐ์ ๋ชจ๋ ์์ ์ ์๋ฉฐ, ์๋ จ๋๋ ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๋ผ๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก,
์ต์๊ฐ์ด 0์ด ์๋ 1๋ถํฐ ์์์ด์ด์ผ ํจ
๋์ ํ์ด
function solution(diffs, times, limit) {
let answer = 100001;
let max = 0; let maxIdx = 0;
let len = diffs.length;
// ์ต๋๊ฐ๊ณผ ์ธ๋ฑ์ค ์ฐพ๊ธฐ
diffs.forEach((d, i)=>{
if(max<d) {
maxIdx = i;
max = d;
}
})
// ์ธ๋ฑ์ค ์ด์งํ์
let left = 1;
let right = max;
while(left <= right){
let level = Math.floor((left+right)/2);
let time = 0;
// console.log(left, level, right);
for(let i=0; i<len; ++i){
if(diffs[i]<=level){
time += times[i];
}
else{
let wrong = diffs[i]-level;
if(i==0) {
time += wrong * times[i] + times[i];
}
else time += wrong * (times[i]+times[i-1]) + times[i];
}
}
// ์ ํ์๊ฐ๋ณด๋ค ๋ ์ค๋๊ฑธ๋ฆฌ๋ฉด -> ๋ ๋ฒจ ๋์ด๊ธฐ
if(time > limit){
left = level+1;
}
else {
answer = Math.min(answer, level);
right = level-1;
}
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.2 : ์์ ์์ถ (PCCP ๊ธฐ์ถ๋ฌธ์ 2๋ฒ) (0) | 2025.03.26 |
---|---|
[Javascript/PGS] Lv.3 : ์ฌํ๊ฒฝ๋ก (0) | 2025.03.24 |
[Javascript/PGS] Lv.3 : ๋ณด์ ์ผํ (0) | 2025.03.20 |
[Javascript/PGS] Lv.3 : ๋ถ๋๋ณต๊ท (0) | 2025.03.20 |
[Javascript/PGS] Lv.3 : ๋ถ๋ ์ฌ์ฉ์(2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ) (0) | 2025.03.20 |