ํ๋์ด๋ distance๋ก ์ฃผ์ด์ง ๊ตฌ๊ฐ๊น์ง ์งํํด์ผํ๋ค.
ํ์ง๋ง ๊ตฌ๊ฐ ๋ด์๋ ๊ฒฝ๋น๊ฐ ์กด์ฌํ๊ณ , ๊ฐ ๊ฒฝ๋น์์ ์์ ์ ๊ตฌ๊ฐ์ ๊ฒฝ๋นํ๋ค. (์ด๋ ๊ฒฝ๋น์๊ฐ๊ณผ ํด์์๊ฐ์ด ์กด์ฌํ๋ค.)
ํ๋์ด๋ ๊ฒฝ๋น์์ ๊ทผ๋ฌด์ ๋ํด ์๋๋ฐ๊ฐ ์์ผ๋ฏ๋ก 1m/s์๋๋ก ์ง์ง๋ง ํ๋๋ฐ, ์ด๋ ํ๋์ด๊ฐ ์ต๋๋ก ์งํํ ์ ์๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ์ฌ๋ผ.
๊ฒฝ๋น ๊ตฌ๊ฐ : scope
๊ฒฝ๋น ๊ทผ๋ฌด, ํด์ ์๊ฐ : time
์ ๊ทผ ๋ฐฉ๋ฒ
์กฐ๊ฑด 1 => 0 < ๊ฒฝ๋น ๊ตฌ์ญ์ ์์ % (๊ฒฝ๋น์๊ฐ + ํด์์๊ฐ) <= ๊ฒฝ๋น ์๊ฐ
์กฐ๊ฑด 2 => 0 < ๊ฒฝ๋น ๊ตฌ์ญ์ ๋ % (๊ฒฝ๋น์๊ฐ + ํด์์๊ฐ) <= ๊ฒฝ๋น ์๊ฐ
์ด๋ผ๋ ์กฐ๊ฑด ๋ด์์ ํ๋์ด๋ ๋ถ์กํ ์ ์๊ฒ ๋๋ค.
์กฐ๊ฑด 1๊ณผ 2๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด
์กฐ๊ฑด 1.
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ์ด๋ผ๋ ๊ตฌ๊ฐ ๋ด์์
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [4, 9] ๋ผ๋ ๊ฒฝ๋น ๊ตฌ์ญ์ด ์ฃผ์ด์ง๋
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [5, 3] ์ด๋ผ๋ ๊ทผ๋ฌด(๋นจ), ํด์(ํ) ์๊ฐ์ด ์ฃผ์ด์ง๋ฉด
๊ฒฝ๋น ๊ตฌ์ญ์ ์์(4) % ํฉ์น ์๊ฐ(8) <= 5(๊ทผ๋ฌด์๊ฐ) ์ด๋ฏ๋ก ๊ทผ๋ฌด ์๊ฐ๊ณผ ๊ตฌ๊ฐ์ด ๊ฒน์น๊ฒ ๋๊ณ ,
์ด๋๋ ๊ฒฝ๋น ๊ตฌ์ญ์ ์ง์ ํ์๋ง์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฏ๋ก ๊ฒฝ๋น ๊ตฌ์ญ์ ์์์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
์กฐ๊ฑด 2.
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ์ด๋ผ๋ ๊ตฌ๊ฐ ๋ด์์
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [4, 8] ๋ผ๋ ๊ฒฝ๋น ๊ตฌ์ญ์ด ์ฃผ์ด์ง๋
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [2, 4] ์ด๋ผ๋ ๊ทผ๋ฌด(๋นจ), ํด์(ํ) ์๊ฐ์ด ์ฃผ์ด์ง๋ฉด
๊ฒฝ๋น ๊ตฌ์ญ์ ๋(8) % ํฉ์น ์๊ฐ(6) <= 2(๊ทผ๋ฌด์๊ฐ) ์ด๋ฏ๋ก ๊ทผ๋ฌด ์๊ฐ๊ณผ ๊ตฌ๊ฐ์ด ๊ฒน์น๊ฒ ๋๊ณ ,
์ด๋๋ ๊ทผ๋ฌด ์๊ฐ์ด ์์๋ ๋ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฏ๋ก ๊ทผ๋ฌด์ ์์ ์๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
(๋ช๋ฒ์งธ ๊ทผ๋ฌด ์์ ์๊ฐ์ธ์ง ๊ณฑํด์ค์ผํ๋ค. (ํฉ์น ์๊ฐ์ด ๋ช๋ฒ์ ์ฌ์ดํด์ด ๋์๋์ง))
์ด๋ฅผ ์ฝ๋๋ก ๋ํ๋ด๋ฉด
for(let i = 0; i < scope.length; i++){ const workStart = Math.min(...scope[i]); const workEnd = Math.max(...scope[i]); // ์กฐ๊ฑด 1. if(0 < workStart % sumWorkRest[i] && workStart % sumWorkRest[i] <= times[i][0]){ answer = workStart; break; } // ์กฐ๊ฑด 2. else if(0 < workEnd % sumWorkRest[i] && workEnd % sumWorkRest[i] <= times[i][0]){ answer = (parseInt(workEnd / sumWorkRest[i]) * sumWorkRest[i]) + 1 break; } } // ๋ง์ฝ for๋ฌธ์ ํต๊ณผํ๋ฉด distance๋ฅผ returnโ
์ด๋ ๊ฒ ํํํ ์ ์๋ค.
ํ์ง๋ง ํ๋ก๊ทธ๋๋จธ์ค์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด 42.9์ ๋ฐ์ ์ป์ง ๋ชปํ๋ค.
์ด๋๊ฐ ์์ธ ์ผ์ด์ค๊ฐ ์๋ ๊ฒ ๊ฐ์๋ฐ ์ฐพ์ง ๋ชปํ์๋ค.
function solution(distance, scope, times) {
var answer = distance;
let sumWorkRest = [];
for(let time of times){
sumWorkRest.push(time[0] + time[1]);
}
for(let i = 0; i < scope.length; i++){
const workStart = Math.min(...scope[i]);
const workEnd = Math.max(...scope[i]);
if(0 < workStart % sumWorkRest[i] && workStart % sumWorkRest[i] <= times[i][0]){
answer = workStart;
break;
}else if(0 < workEnd % sumWorkRest[i] && workEnd % sumWorkRest[i] <= times[i][0]){
answer = (parseInt(workEnd / sumWorkRest[i]) * sumWorkRest[i]) + 1
break;
}
}
return answer;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 3์ฐจ 2๋ฒ (0) | 2022.08.12 |
---|---|
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 3์ฐจ 1๋ฒ (0) | 2022.08.12 |
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 2์ฐจ 2๋ฒ (0) | 2022.07.28 |
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 2์ฐจ 1๋ฒ (0) | 2022.07.27 |
[Javascript] ์ค์ ๋๋น ๋ชจ์๊ณ ์ฌ 1์ฐจ 3๋ฒ (0) | 2022.07.13 |