Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 주니어
- 스프링 부트
- 스프링부트
- 구름LEVEL
- HTTP
- 프로그래머스
- 코딩테스트
- 명령어
- 해시맵
- 문자열
- 백엔드
- 해결
- dfs
- 스타트업
- docker
- 스프링
- Java
- HashMap
- 개발자
- spring
- 이직
- Linux
- 인텔리제이
- 자료구조
- spring boot
- 배열
- 구현
- IntelliJ
- 도커
- bfs
Archives
- Today
- Total
마이의 개발 블로그
[프로그래머스] 프린터 (Java) 본문
반응형
우선순위 대기열이다보니 스택이나 큐를 사용해서 풀어보려고 했는데 결국 반복문으로 해결했다.
- 계속 한쪽방향으로 순회하며
1) 문서의 가장 큰 우선순위 여부 체크
2) 가장 큰 우선순위인 경우 프린트 (해당 문서 우선순위를 0으로 변경)
3) 프린트 순서(order) 증가
4) 프린트된 문서가 location인 경우 순서 반환
Note
- 이 문제의 경우 탐색이 끝난 후 다음 index로 넘어갈 때 자동으로 이전 index의 문서가 마지막 프린트 우선순위가 되므로 별도로 문서의 우선순위를 저장할 필요가 없다고 판단했다. 탐색의 순서가 중간에 바뀌어야 하는 예외 상황들이 있거나 매회 체크해야하는 종료조건이 까다로웠다면 다른 자료구조를 활용했을 것이다.
- 프로그래머스 스택/큐 문제들은 아직까지는 꼭 그 자료구조를 활용하여 풀지 않아도 해결되는 경우가 종종 있는 것 같다.
class Solution {
public int solution(int[] priorities, int location) {
int idx = 0;
int order = 0;
while(true){
int doc = idx % priorities.length;
Boolean isHighest = true;
for(int p : priorities){
if(p > priorities[doc]){
isHighest = false;
break;
}
}
if(isHighest){
priorities[doc] = 0;
order++;
if(doc == location){
return order;
}
}
idx++;
}
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 (Java) (0) | 2023.01.29 |
---|---|
[프로그래머스] 위장 (Java) (0) | 2023.01.29 |
[프로그래머스] 타겟 넘버 (Java) (0) | 2023.01.27 |
[프로그래머스] 우박수열 정적분 (Java) (0) | 2023.01.25 |
[프로그래머스] 다트 게임 (Java) (0) | 2023.01.24 |
Comments