[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - java 자바
2021. 12. 1. 05:00ㆍ네카라쿠배 취준반 - 프로그래머스 문제 풀이
0. 자세한 설명은 YouTube 영상으로
1-1. Class + Queue를 활용한 Solution
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
// 1. List로 만들기
List<PrintJob> printer = new ArrayList<PrintJob>();
for (int i = 0; i < priorities.length; i++)
printer.add(new PrintJob(i, priorities[i]));
int turn = 0;
while (!printer.isEmpty()) {
// 2. 0번을 꺼내서 max priority가 아니면 다시 끝에 넣기
PrintJob job = printer.remove(0);
if (printer.stream().anyMatch(otherJob -> job.priority < otherJob.priority)) {
printer.add(job);
} else {
turn++;
// 3. max Priority가 맞다면 내가 찾는 job이 맞는지 확인하기
if (location == job.location)
break;
}
}
return turn;
}
class PrintJob {
int priority;
int location;
public PrintJob(int location, int priority) {
this.location = location;
this.priority = priority;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
int[] priorities = { 2, 1, 3, 2 };
System.out.print(sol.solution(priorities, 2));
}
}
1-2. Queue만 활용한 Solution
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int[] priorities, int location) {
// 1. List로 만들기
List<Integer> printer = new ArrayList<Integer>();
for (int priority : priorities)
printer.add(priority);
int turn = 0;
while (!printer.isEmpty()) {
// 2. 0번을 꺼내서 max priority가 이나면 다시 끝에 넣기
Integer priority = printer.remove(0);
if (printer.stream().anyMatch(otherPriority -> priority < otherPriority)) {
printer.add(priority);
} else {
turn++;
// 3. max Priority가 맞다면 내가 찾는 job이 맞는지 확인하기
if (location == 0)
break;
}
location--;
if (location < 0)
location = printer.size() - 1;
}
return turn;
}
public static void main(String[] args) {
Solution sol = new Solution();
int[] priorities = { 2, 1, 3, 2 };
System.out.print(sol.solution(priorities, 2));
}
}
- YouTube 영상에 자세한 내용을 정리했으니 참고하세요.
'네카라쿠배 취준반 - 프로그래머스 문제 풀이' 카테고리의 다른 글
[프로그래머스] 체육복 문제 풀이(탐욕법 Greedy Lv.1) - java 자바 (0) | 2021.12.08 |
---|---|
[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - C++ (0) | 2021.12.06 |
[2021 카카오 코딩테스트] 신규 아이디 추천 - C++ (0) | 2021.11.29 |
[2021 카카오 코딩테스트] 신규 아이디 추천(문자열, String Lv. 1) - java 자바 (0) | 2021.11.24 |
[2021 카카오 코딩테스트] 신규 아이디 추천 - 파이썬 (0) | 2021.11.22 |