import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuilder ans = new StringBuilder();
int T = Integer.parseInt(in.readLine()), targetIndex, index, maxPriority, priority, count;
int[] out;
StringTokenizer st;
Queue<int[]> queue = new LinkedList<int[]>();
for (int tc = 0; tc < T; tc++) {
queue.clear();
st = new StringTokenizer(in.readLine());
st.nextToken();
targetIndex = Integer.parseInt(st.nextToken());
st = new StringTokenizer(in.readLine());
index = 0;
while (st.hasMoreTokens()) {
priority = Integer.parseInt(st.nextToken());
queue.offer(new int[] { priority, index++ });
}
count = 0;
while (!queue.isEmpty()) {
maxPriority = 0;
for (int[] obj : queue) {
maxPriority = Math.max(maxPriority, obj[0]);
}
out = queue.poll();
if (out[0] < maxPriority) {
queue.offer(out);
continue;
}
count++;
if (out[1] == targetIndex)
break;
}
ans.append(count).append("\n");
}
in.close();
System.out.println(ans);
}
}
스터디원들과 함께 한 주동안 풀 문제들을 선정하고 백준 그룹에, 그룹 내 문제집까지 만들었다.
다른 좋은 아이디어도 있을 것 같지만 Queue를 좀 더 연습하기 위해 문제 조건을 그대로 구현했다.
사실상 구현 문제에 가까운 문제인데도 1시간이나 넘게 걸렸다... Queue 사용 자체가 처음이라서 뭘 사용해야 할지 몰라서 헤매느라 그랬다고 쳐도 너무 오래 걸렸다..ㅠㅠ
queue에 priority와 index 정보를 담고 있는 객체를 offer 해줄 생각을 떠올리지 못해서 여러 flag들을 활용하다가 내 머리까지 어지러워져서..😵
다른 풀이들을 좀 참고해서 겨우 풀었다.
너무 많은 변수들을 사용하면 나까지 어지러워지니까 좀 더 simple하게 가져가볼 생각을 하자
'온라인 저지 > BOJ' 카테고리의 다른 글
[BOJ/Java] 13335 트럭 (0) | 2022.02.10 |
---|---|
[BOJ/Java] 2493 탑 (0) | 2022.02.09 |
[BOJ/Java] 1991 트리 순회 (0) | 2022.02.06 |
[BOJ/Java] 17478 재귀함수가 뭔가요? (0) | 2022.02.03 |
[BOJ/Node.js] 1786 찾기 (0) | 2022.01.30 |
댓글