성능 요약
- 메모리: 79.3 MB, 시간: 0.45 ms
구분
- 코딩테스트 연습 > 스택/큐
Answer Code1(23.03.28)
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> q = new LinkedList<>();
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < speeds.length; i++) {
double remain = (100 - progresses[i]) / (double) speeds[i];
int date = (int) Math.ceil(remain); //Math.ceil: 올림
if(!q.isEmpty() && q.peek() < date) { //3 < 5
answerList.add(q.size());
q.clear();
}
q.offer(date);
}
answerList.add(q.size());
int[] answer = new int[answerList.size()];
for(int i = 0; i < answer.length; i++) {
answer[i] = answerList.get(i);
}
return answer;
}
}
Review
-
스택/큐로 구현하는 아이디어가 도저히 떠오르지 않아 정답 풀이를 보고 다시 풀었다.
-
정답 풀이에서
if(!q.isEmpty() && q.peek() < date)
에 대한 해석이 한 번에 와닿지 않아서, queue에 대한 개념과 메서드들을 자바의 정석 책을 통해 다시 공부하게 되었다.-
현재 큐가 비어있지 않고, 큐에 있는 값이 date 값보다 작은 경우를 의미한다.
-
즉, 뒤에 있는 기능이 먼저 개발되더라도 앞에 있는 기능이 배포될때 함께 배포된다는 의미는 q에서 값을 비운다는 것이다.
-
-
이해하기 어려워서 해당 문제는 나중에 다시 풀어보자.