작성
·
66
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
위험도가 높은 환자 순서로 우선순위 큐를 만들었습니다. 정답으로 찾아야 하는 환자의 위치의 번호를 이동해가면서 현재 치료 받는 환자가 찾아야 하는 환자인지를 체크 했고요. 우선순위 큐에서 poll한 값을 통해서 현재 대기하고 있는 환자가 현재 치료를 받아도 되는지(우선순위가 가장 높은지)를 체크 했습니다.
public int solution(int[] input1, int m) {
Queue<Integer> q = new LinkedList<>();
Queue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder());
int seq = m;
for (int i : input1) {
q.offer(i);
pq.offer(i);
}
int cnt = 0;
while (true) {
Integer poll = q.poll();
seq--;
if (Objects.equals(pq.peek(), poll)) {
cnt++;
if (seq == -1) {
break;
}
pq.poll();
} else {
q.offer(poll);
if (seq == -1) {
seq = q.size() - 1;
}
}
}
return cnt;
}
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
임인혁님께서 작성하신 우선순위 큐를 활용한 코드는 응급실 문제를 해결하기 위한 방법 중 하나입니다. 이러한 방법은 우선순위 큐(PriorityQueue)와 일반 큐(Queue)를 함께 사용하여 대기열에서 가장 높은 우선순위에 있는 환자를 먼저 처리할 수 있도록 설계되었습니다. 이 방법은 문제의 조건에 잘 맞게 설계되었고, 우선순위 큐를 통해 가장 중요한 환자를 빠르게 식별할 수 있습니다.
하지만 코드의 효율성을 따져볼 때, 여러 개의 큐를 사용하고 있으며, 특히 큐에 요소를 다시 넣거나 다른 큐와 비교하는 과정이 반복될 경우 시간이 많이 소요될 수 있습니다. 따라서 코드의 효율성을 더 높이기 위해서는 다음과 같은 점을 고려할 수 있습니다:
큐의 재사용: 현재 큐의 요소를 직접 조작하여 우선순위에 맞게 처리하는 방법을 찾는 것도 하나의 방법입니다. 복잡한 조작 없이 한 큐에서 모든 처리가 가능하도록 한다면 효율성이 더 높아질 수 있습니다.
조건 체크 간소화: 매번 큐의 요소를 확인하고 우선순위를 따지기보다는, 우선순위가 가장 높은 요소가 언제 나타나는지를 트래킹하여 불필요한 연산을 줄일 수 있습니다.
비슷한 질문과 해결 방법을 찾고자 한다면 다음 URL을 참고할 수 있습니다:
- 8. 응급실 문제에서 큐에 넣어준 임시변수를 null 값을 새로 할당할 필요가 없지 않을까요?
- PriorityQueue 클래스를 사용해보고 싶은데 뭐 때문에 오류가 나는지 모르겠어요
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.