๋ฐ์ดํฐ์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ํ ์ชฝ ๋ฐฉํฅ์์ ์ผ์ด๋๋ ๊ตฌ์กฐ
๋ฐ์ดํฐ์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉํฅ์์ ์ผ์ด๋๋ ๊ตฌ์กฐ
ํ๋ฆฐํฐ ๋ณต์ฌ ์์๋ฅผ Queue์ ์๋ก ๋ค ์ ์๋ค. ๊ฐ์ฅ ์ฒ์ ํ๋ฆฐํธ๋ฅผ ์์ฒญํ ์ฌ๋์ ๋ฌธ์๊ฐ ์ ์ผ ๋จผ์ ์ธ์๋๋ค.
์ถ์ฒ: YOUTUBE-EBS ๋งํฌ ์ํํธ์จ์ด ์ธ์, "์๊ณ ์ค ์ธ์ฐ๋ ๋ฐ์ดํฐ, ์คํ๊ณผ ํ"
ํ๋ก๊ทธ๋๋จธ์ค ํ์์๋ ๊ธฐ๋ฅ ๊ฐ์ ์์ ์ ์ํ ์ค์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ ์ง๋๊ฐ 100%์ผ ๋ ์๋น์ค์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋, ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ ๊ธฐ๋ฅ์ด ์์ ์๋ ๊ธฐ๋ฅ๋ณด๋ค ๋จผ์ ๊ฐ๋ฐ๋ ์ ์๊ณ , ์ด๋ ๋ค์ ์๋ ๊ธฐ๋ฅ์ ์์ ์๋ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ ๋ ํจ๊ป ๋ฐฐํฌ๋ฉ๋๋ค.
๋จผ์ ๋ฐฐํฌ๋์ด์ผ ํ๋ ์์๋๋ก ์์ ์ ์ง๋๊ฐ ์ ํ ์ ์ ๋ฐฐ์ด progresses์ ๊ฐ ์์ ์ ๊ฐ๋ฐ ์๋๊ฐ ์ ํ ์ ์ ๋ฐฐ์ด speeds๊ฐ ์ฃผ์ด์ง ๋ ๊ฐ ๋ฐฐํฌ๋ง๋ค ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋๋์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
// ๋์ ๋ฌธ์ ํ์ด
function solution(progresses, speeds) {
let answer = [];
let days = progresses.map((progress, idx) => Math.ceil((100-progress)/speeds[idx]));
let count = 0;
let maxDeployDays = days[0];
for (let j = 0; j < days.length; j++) {
if (days[j] <= maxDeployDays) {
count++;
} else {
answer.push(count);
count = 1;
maxDeployDays = days[j];
}
}
if (count !== 0) {answer.push(count)};
return answer;
}
// ์ธ๊ธฐ์๋ ๋ฌธ์ ํ์ด
// ๋ณ๋๋ก count๋ผ๋ ๋ณ์๋ฅผ ์ง์ ํ ํ์์์ผ๋ answer์ ์ ์ฅ๋์ง ์์ count๋ฅผ ์
๋ ฅํ๊ธฐ ์ํด if๋ฌธ์ ์ถ๊ฐ๋ก ์์ฑํ ํ์๋ ์๋ค.
// ํ๊ฐ์ for๋ฌธ์ผ๋ก 2๊ฐ์ ๋ณ์์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for(let i = 0, j = 0; i< days.length; i++){
if(days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}