본문 바로가기
알고리즘

[프로그래머스] 프린트

by steadyMan 2022. 1. 23.

큐 자료구조를 사용한 풀이

큐 사용시에 인덱스로 접근이 불가능하기 때문에 queue.isEmpty를 활용한 연산 잘 고민해봐야겠다.

 

문제

 - 프로그래머스 > 코딩테스트 연습 > 스택/큐 > 프린터

 - https://programmers.co.kr/learn/courses/30/lessons/42587

 

풀이 

1. 중요도와 위치를 기록하기 위한 클래스(Mock)생성 

2. 큐에 입력 후 반복문 실행 

3. 이중 반복문을 통하여 맨 앞의 중요도 보다 큰 중요도 존재 시 마지막으로 이동 제일 큰 수라면 카운트 증가

4. 제일큰수 이면서 location변수의 할당된 값과 동일하다면 리턴 

제일 햇갈렸던건 무한반복이 걸리지 않을까 고민했지만 어쨋든 정렬과정에서 location이 발생할테니까 

상관없다. 

 

코드

class Mock {
		 int priorities;
		 int location;
		
		public Mock(int priorities, int location) {
			this.priorities = priorities;
			this.location = location;
		}
	}
	
	public int solution(int[] priorities, int location) {
	    	Queue<Mock> queue = new LinkedList<Mock>();
	    	int answer = 0;
	    	
	    	for (int i = 0; i < priorities.length; i++) {
				queue.add(new Mock(priorities[i], i));
			}
	    	
	    	int cnt = 0;
	    	while(!queue.isEmpty()) {
	    		Mock task = queue.poll();
	    		boolean flag = false;
	    		for(Mock mock : queue) {
	    			if(task.priorities < mock.priorities) {
	    				flag = true;
	    			}
	    		}
	    		
	    		if(flag) {
	    			queue.add(task);
	    		}else {
	    			cnt++;
    				if(task.location == location) {
    					answer = cnt;
    					break;
    				}
	    		}
	    	}
	        return answer;
	    }

 

'알고리즘' 카테고리의 다른 글

[알고리즘] 다양한 정렬 알고리즘  (0) 2022.04.28
[알고리즘] 숫자를 뒤집기  (0) 2022.04.06
[프로그래머스] 모의고사  (0) 2022.03.04
[프로그래머스] 주식가격  (0) 2022.02.01
[프로그래머스] 기능개발  (0) 2022.01.21

댓글