๋ฌธ์ ๋งํฌ:
https://programmers.co.kr/learn/courses/30/lessons/42586
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๊ธฐ๋ฅ๊ฐ๋ฐ
ํ๋ก๊ทธ๋๋จธ์ค ํ์์๋ ๊ธฐ๋ฅ ๊ฐ์ ์์ ์ ์ํ ์ค์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ ์ง๋๊ฐ 100%์ผ ๋ ์๋น์ค์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋, ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ ๊ธฐ๋ฅ์ด ์์ ์๋
programmers.co.kr
ํ์ด:
์ด ๋ฌธ์ ์ ์์ ์ ์์ ์๋ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋์ด์ผ ๋ค์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.Queue๋ ๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ FIFO(First In First Out) ํน์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ฌธ์ ํด๊ฒฐ์ ์ฐธ๊ณ ํ๋ค.
// ์์
์๋ฃํ๋ ๋ฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๊ณ์ฐ: (100 - ์์
์ง๋) / ์์
์๋
for (int i = 0; i < progresses.length; i++) {
int time = (100 - progresses[i]) / speeds[i];
// ๋๋จธ์ง๊ฐ ์์ผ๋ฉด ์ผ์ + 1
if ((100 - progresses[i]) % speeds[i] != 0) {
time++;
}
worktime.add(time);
}
๋จผ์ (100 - ์์ ์ง๋) / ์์ ์๋๋ฅผ ๊ฑธ๋ฆฌ๋ ์ผ์๋ก ์ก๊ณ ๋๋จธ์ง๊ฐ ์์ ๊ฒฝ์ฐ์ ํ๋ฃจ๋ฅผ ๋ํ๋ ๊ฒ์ผ๋ก ์์ ์ ์๋ฃํ๋ ๋ฐ์ ๊ฑธ๋ฆฌ๋ ์ผ์๋ฅผ ์ ์ฅํ๋ List์ ๋ฃ์ด ์ค๋ค.
public List<Integer> calcNextWork(Queue<Integer> worktime) {
List<Integer> result = new ArrayList<Integer>();
// prevWork: ๋น๊ตํ ๋ ๊ธฐ์ค์ด ๋๋ ์ผ์
int prevWork = worktime.poll();
int cnt = 1;
while (!worktime.isEmpty()) {
int nextWork = worktime.peek();
if (prevWork < nextWork) {
result.add(cnt);
cnt = 1;
prevWork = worktime.poll();
} else {
worktime.poll();
cnt++;
}
}
result.add(cnt);
return result;
}
๊ฐ์ฅ ์ฒ์ ์ผ์๋ฅผ prevWork๋ก ์ ์ฅํ๊ณ ๋ค์์ ์ค๋ ์ผ์์ ๋น๊ตํ์ฌ ์์ผ๋ฉด ๊ฒฐ๊ณผ list์ ๋ฃ์ด ์ฃผ๊ณ
์๋๋ฉด, ๊ทธ ๋ค์์ ์ผ์๋ฅผ ๊บผ๋ด์ preWork๋ณด๋ค ์์ ๊ฐ์ด ๋์ฌ ๋๊น์ง ๋น๊ตํ๋ค.
์์ค ์ฝ๋:
'๊ฐ๋ฐ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] 17677๋ฒ: ๋ด์ค ํด๋ฌ์คํฐ๋ง (JAVA) (0) | 2022.06.20 |
|---|---|
| [๋ฐฑ์ค/BOJ] 1406๋ฒ: ์๋ํฐ (JAVA) (0) | 2022.06.08 |
| [ํ๋ก๊ทธ๋๋จธ์ค] 92334๋ฒ: ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (JAVA) (0) | 2022.06.06 |
| [๋ฐฑ์ค/BOJ] 15953๋ฒ: ์๊ธ ํํฐ (JAVA) (0) | 2022.06.05 |