Dev.baelanche

[백준 1966] 프린터 큐 본문

Data Structure & Algorithm/PS - JAVA

[백준 1966] 프린터 큐

baelanche 2019. 4. 6. 15:03
반응형

 

큐는 인덱스가 없기 때문에 문서를 담을 큐와 우선순위를 담을 배열을 만들어 풀었다.

 

m 번째로 인쇄되는 문서는 this 라는 이름으로 지었다.

큐의 front 가 우선순위가 제일 높으면 pop 하고 그렇지 않으면 push, pop 을 한다.

동시에 동적배열에서도 우선순위가 제일 높으면 remove 하고 그렇지 않으면 add(get(0)), remove(0) 한다.

 

 

큐의 front 가 우선순위 최대값이어서 성공적으로 pop 되었을때만 카운트를 늘렸다.

직접 구현한 큐는 제외하고 올리겠다. (큐 소스는 여기에)

 

 

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		Main q = new Main();
		
		int t = sc.nextInt();
		
		while(t-->0) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			ArrayList<Integer> order = new ArrayList<Integer>();
			
			for(int i=0; i<n; i++) {
				order.add(sc.nextInt());
				if(i == m) q.push("this");
				else q.push("docu");
			}
			
			int cnt = 0;
			while(true) {
				int bigest = 0;
				for(int j=0; j<order.size(); j++) {
					if(bigest < order.get(j))
						bigest = order.get(j);
				}
				//System.out.println("큐 : " + q.toString());
				//System.out.println("배열 : " + order.toString());
				if(bigest == order.get(0)) {
					cnt++;
					if(q.front().equals("this")) break;
					q.pop();
					order.remove(0);
				} else {
					q.push(q.front());
					q.pop();
					order.add(order.get(0));
					order.remove(0);
				}
			}
			
			System.out.println(cnt);
			order.clear();
			q.clear();
		}
		sc.close();
	}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 11724] 연결 요소의 개수  (0) 2019.04.08
[백준 3034] 앵그리 창영  (0) 2019.04.07
[백준 2164] 카드2  (0) 2019.04.06
[백준 10845] 큐  (0) 2019.04.06
[백준 9507] Generations of Tribbles  (0) 2019.04.06
Comments