프로그래머스 '프린터' 문제풀이(JAVA) - Henry's Algorithm

프로그래머스 '프린터' 문제풀이(JAVA) - Henry's Algorithm

안녕하세요

Henry's Algorithm의 Henry입니다.

오늘은 제가 프로그래머스

Level 2의 프린터 문제를 풀어보았습니다.

첫 시도는 잘 안풀렸는데,

다음날 다시 풀어보니까, 생각이 잘 정리되서 잘 풀렸네요!ㅎㅎ

문제는 푸는 요령:

저는 Queue 자료구조를 사용해서 풀었습니다.

priorities와 index 정보를 가지고 있는 배열 각각 1개씩 만들고,

while 문을 통해 priorities가 모두 pop 되기 전까지 우선순위를 비교하는 과정을 반복했습니다.

- java.util.Collections을 import해서 List의 최대, 최소를 구할 수 있어, 해당 라이브러리를 사용했습니다.

아래는 제가 푼 코드입니다.

import java.util.Queue; import java.util.LinkedList; import java.util.*; class Solution { public int solution(int[] priorities, int location) { int answer = 0; Queue indexs = new LinkedList<>(); Queue priors = new LinkedList<>(); for(int i = 0; i< priorities.length; i++){ priors.add(priorities[i]); indexs.add(i); } while(!priors.isEmpty()){ int front = priors.poll(); int frontIdx = indexs.poll(); int max = priors.isEmpty() ? -1 : Collections.max(priors); if(max == -1){ return answer + 1; } if(front >= max){ answer += 1; if(frontIdx == location){ return answer; } continue; } priors.add(front); indexs.add(frontIdx); } return answer; } }

오늘도 즐거운 코딩되세요~!ㅎㅎ

from http://datacodingschool.tistory.com/231 by ccl(A) rewrite - 2021-10-11 02:01:46