티스토리 뷰
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스 고득점 코딩테스트 Kit의 스택/큐 Level 2 문제다.
먼저 priorites의 값을 큐에 넣는다.
location 위치에 있는 값이 몇번째로 인쇄되는지 구하는 문제이기 때문에
priorites의 인덱스 값과 함께 큐에 넣어야 한다.
큐의 가장 앞에 있는 값을 빼내고,
빼낸 값의 중요도보다 더 높은 중요도가 큐에 존재한다면 다시 큐의 맨 뒤로 넣는다.
location 위치의 값이 몇번째로 인쇄되는지 구하기 위해
큐의 맨 뒤로 넣지 않고 아예 큐에서 빼냈을 때 answer를 1씩 증가시킨다.
그리고 그 빼낸 값의 인덱스와 location를 비교하여 같다면
while문을 탈출하고 answer값을 반환하면 된다.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Iterator;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<int []> q = new LinkedList<>();
for(int i=0;i<priorities.length;i++)
q.offer(new int[] {priorities[i], i});
while(!q.isEmpty()) {
int[] i = q.poll();
int value = i[0];
int loc = i[1];
Iterator<int[]> iter = q.iterator();
boolean flag = false;
// 큰 값 있는지 검사
while(iter.hasNext()) {
if(value < iter.next()[0]) {
flag = true;
q.offer(i);
break;
}
}
if(!flag) {
answer++;
if(location == loc)
break;
}
}
return answer;
}
}
728x90
'algorithm > programmers' 카테고리의 다른 글
[프로그래머스/자바] 더 맵게 풀이 (0) | 2022.11.14 |
---|---|
[프로그래머스/자바] 주식가격 풀이 (0) | 2022.11.14 |
[프로그래머스/자바] 기능개발 풀이 (0) | 2022.11.14 |
[프로그래머스/자바] 올바른 괄호 풀이 (0) | 2022.11.14 |
[프로그래머스/자바] 같은 숫자는 싫어 풀이 (0) | 2022.11.14 |