๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/340212
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ฅํ์ด
์ ํ์ฌํญ์ ๋ณด๋ฉด์ ๋ฐ๋ก ์ด์งํ์์ผ๋ก ์ ๊ทผํ๋ผ๋ ๋์๋ฅผ ๋งก์ ์ ์์๋ค. ์ด์งํ์์ผ๋ก ์ ๊ทผ ์ํ๋ค๋ฉด ๊ดด๋ํ ๋งํผ์ ์ฐ์ฐ ํ์๊ฐ ํ์ํ๊ณ ๊ทธ๋ผ ๋ถ๋ช ํ ์๊ฐ์ด๊ณผ ์ด์๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ด๋ค. ๋คํํ ํด๋น ์ ๊ทผ์ด ๋ง์๊ณ ํด๊ฒฐ!
function solution(diffs, times, limit) {
let max = 100000, min = 1, mid = undefined
let answer = max
while(min<=max){
mid = Math.floor((max+min)/2)
let spendTime = 0, over = false
for(let i=0; i<diffs.length; ++i){
if(mid-diffs[i]<0){
spendTime = spendTime + (diffs[i]-mid)*(times[i]+times[i-1]) + times[i]
}else{
spendTime+= times[i]
}
if(limit<spendTime){
over = true
break;
}
}
if(over){
min = mid + 1
}else{
answer = mid
max = mid -1
}
}
return answer
}
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค[JS] > 1021๋ฒ ํ์ ํ๋ ํ (0) | 2024.10.30 |
---|---|
๋ฐฑ์ค[JS] > 1074๋ฒ Z (0) | 2024.10.28 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > [PCCP ๊ธฐ์ถ๋ฌธ์ ] 3๋ฒ / ์ถฉ๋์ํ ์ฐพ๊ธฐ (0) | 2024.09.11 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ฑฐ์ค๋ฆ๋ (2) | 2024.09.06 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฆฌ์ฝ์ณ ๋ก๋ด (0) | 2024.08.25 |