ํ๋ก๊ทธ๋๋จธ์ค "๊ธฐ๋ฅ๊ฐ๋ฐ(lv.2)" ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ, ๋๋ฌด ์ฝ๋๋ฅผ ๊ธธ๊ฒ ํจ์จ์ ์ผ๋ก ์ง์ง ๋ชปํ ๊ฒ ๊ฐ์
๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ๊ฐ์ ํด๋ณด๊ณ ์ ํ๋ค !
์ผ๋จ ๋ด ํ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
// ์์
์ด ๋๋๊ธฐ๊น์ง ๋จ์ ์ผ ์
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < speeds.length; i++) {
int lastProgresses = 100-progresses[i];
if (lastProgresses % speeds[i] == 0) {
q.add(lastProgresses/speeds[i]);
} else {
q.add(lastProgresses/speeds[i] + 1);
}
}
// q๋ฅผ ๊ฐ์ง๊ณ ์์
์ผ ์ ๋น๊ต
ArrayList<Integer> dayList = new ArrayList<>();
while(!q.isEmpty()) {
int cnt = 1;
int front = q.remove();
while(!q.isEmpty() && front >= q.peek()) {
q.remove();
cnt += 1;
}
dayList.add(cnt);
}
// answer ๋ฐฐ์ด๋ก ๋ณ๊ฒฝ
int[] answer = new int[dayList.size()];
for(int i=0; i< answer.length; i++) {
answer[i] = dayList.get(i);
}
return answer;
}
}
์ฌ๊ธฐ์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋์ฑ๋ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ ํ๋ ๋ฐฉ๋ฒ์
์ผ๋จ ์์ ์ด ๋๋๊ธฐ๊น์ง ๋จ์ ์ผ์๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์์
double remain = (100 - progresses[i]) / (double) speeds[i];
int date = (int) Math.ceil(remain); // Math.ceil() ์ ์ด์ฉ
Math.ceil()์ ์ด์ฉํด์ ๋จ์ ์ผ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค
๋๋ if-else ๊ตฌ๋ฌธ์ ์ด์ฉํด์ ์กฐ๊ธ ๋ณต์กํด ๋ณด์๋ค.
์ด๋ณด๋ค ์ค์ํ ๊ฒ์ ๋ด ์ฝ๋๋ ์ผ๋จ ๋จ์ ์ผ์๋ฅผ ํ์ ๋ค ๋ฃ๊ณ , ์ดํ์ ํ์์ ํ๋์ฉ ๊บผ๋ด๋ฉด์ ๊ฐ์ ํ์ธํ๋ฉฐ dayList์ ๋ฃ์๋๋ฐ,
๋ค๋ฅธ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋, ๋จ์ ์ผ์๋ฅผ ๊ตฌํจ๊ณผ ๋์์ ํ์ ๋ค์ด๊ฐ์๋ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ฐ๋ก answer์ ๊ฐ์ ๋ฃ๊ณ ํ๋ฅผ ์ด๊ธฐํ ์ํค๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค ! ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ด๊ฐ ์ง ์ฝ๋์ฒ๋ผ for, while ๋ฐ๋ณต๋ฌธ์ ๋๊ฐ ์ฌ์ฉํ ํ์ ์์ด for ๋ฐ๋ณต๋ฌธ ํ๋์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
for(int i = 0; i < speeds.length; i++) {
// ์์ date๊ณ์ฐ
if(!q.isEmpty() && q.peek() < date) {
// ์๋ฅผ ๋ค์ด queue์ [10,1]์ด ๋ค์ ์๋ ์ํ์์ ๊ทธ๋ค์ date๊ฐ 13์ด์๋ค๋ฉด
// ์ด ์กฐ๊ฑด๋ฌธ์์ ๋ด์ฉ์ ์ํํ๊ฒ ๋๋๋ฐ, ์ง๊ธ๊น์ง ํ์ ์๋ ๊ฐ์ ์ถ๋ ฅ -> ์ฆ, 2๊ฐ ๊ธฐ๋ฅ ๋ฐฐํฌ
dayList.add(q.size());
q.clear(); // ๊ทธ ์ดํ์ ์ด๊ธฐํ ์์ผ์ ๋ค์ date์ธ 13์ ์ด ์กฐ๊ฑด๋ฌธ์ ๋น ์ ธ๋์ ํ์ ์ฒ์์ผ๋ก ๋ค์ด๊ฐ๊ฒ๋จ
}
q.offer(data);
}
dayList.add(q.size()); // speeds์ ๊ฐ์๊ฐ 3๊ฐ์ธ ์ํ์์ ์๊น ์์๋ฅผ ์ํํ๋ฉด 13์ ํ์ ๋จ๊ณ ์กฐ๊ฑด๋ฌธ์ด ๋๋จ -> ์ด๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ๋์์ ์ถ๋ ฅ
๊ทธ๋ฆฌ๊ณ dayList๋ฅผ answer๋ฐฐ์ด๋ก ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ArrayList๋ฅผ Array๋ก ๋ณ๊ฒฝํ๋ ๋ฒ์ ๋ชฐ๋ผ์ ์ฐพ์๋ดค์๋ค !
int[] answer = new int[dayList.size()];
for(int i=0; i< answer.length; i++) {
answer[i] = dayList.get(i);
}