본문 바로가기
온라인 저지/BOJ

[BOJ/Java] 1966 프린터 큐

by ahj 2022. 2. 9.
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

댓글