1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42587?language=java
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
2. 나의 풀이
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
ArrayList <Integer> arr1 = new ArrayList <Integer>();
ArrayList <Integer> arr2 = new ArrayList <Integer>();
for(int i = 0; i < priorities.length; i = i + 1) {
arr1.add(priorities[i]);
arr2.add(i+1);
}
//System.out.println("arr1 : " + arr1 + ", arr2 : " + arr2);
for(int i = 0; i < priorities.length; ) {
if(i == priorities.length - 1) {
break;
}
boolean check = false;
for(int j = i + 1; j < priorities.length; j = j + 1) {
if(arr1.get(i) < arr1.get(j)) {
arr1.add(arr1.get(i));
arr1.remove(i);
arr2.add(arr2.get(i));
arr2.remove(i);
check = true;
break;
}
}
if(check == false) {
i++;
}
//System.out.println("arr1 : " + arr1 + ", arr2 : " + arr2);
//System.out.println("i : " + i);
}
for(int i = 0; i < priorities.length; i = i + 1) {
if(arr2.get(i) == (location + 1)) {
return i + 1;
}
}
return 0;
}
}
- ArrayList 객체를 2개 생성한 후 첫 번째는 기존 priorities 배열을 넣고 두 번째는 1부터 priorities배열 개수만큼을 배열에 넣는다. 후에 문제의 내용 처럼 첫 인덱스의 배열 요소 보다 작을 경우 배열의 맨 뒤로 시킨다. 이 때 두 번째 ArrayList또한 동일하게 이동시켜 마지막까지 내림차순으로 정렬되었을 때 두 번째 ArrayList에서 문제에서 요청하는 location의 위치를 확인하여 리턴한다.
3. 다른 사람 풀이
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
int l = location;
Queue<Integer> que = new LinkedList<Integer>();
for(int i : priorities){
que.add(i);
}
Arrays.sort(priorities);
int size = priorities.length-1;
while(!que.isEmpty()){
Integer i = que.poll();
if(i == priorities[size - answer]){
answer++;
l--;
if(l <0)
break;
}else{
que.add(i);
l--;
if(l<0)
l=que.size()-1;
}
}
return answer;
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - Summer/Winter Coding(2019) - 멀쩡한 사각형 (0) | 2020.11.15 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 2020 KAKAO BLIND RECRUITMENT - 문자열 압축 (0) | 2020.11.13 |
(Java)프로그래머스 코딩테스트 연습 - 스택/큐 - 다리를 지나는 트럭 (0) | 2020.11.12 |
(Java)프로그래머스 코딩테스트 연습 - 2019 KAKAO BLIND RECRUITMENT - 실패율 (0) | 2020.11.10 |
(Java)프로그래머스 코딩테스트 연습 - 연습문제 - 하샤드 수 (0) | 2020.11.10 |