-
[프로그래머스] Level.2 - 프린터 (JAVA)개발공부/코딩테스트 연습문제 2022. 1. 26. 14:37
문제 설명과 제한사항

풀이
import java.util.*; class Solution { public int solution(int[] priorities, int location) { int count = 0; List<print> pl = new ArrayList<print>(); for(int i = 0 ; i < priorities.length; i++){ pl.add(new print(i, priorities[i])); } while(!pl.isEmpty()){ print p = pl.remove(0); for(int i = 0 ; i < pl.size(); i++){ if(pl.get(i).priority > p.priority) { pl.add(pl.size(), p); break; } if(i == pl.size()-1) { count++; if(p.index == location){ return count; } } } } return count; } public class print{ int index; int priority; print(int index, int priority){ this.index = index; this.priority = priority; } } }+++
우선 1차 풀이다

100점을 받지 못했기 때문이다.
우선 반복문을 겹치고 겹치고 겹쳐 하드코딩으로 풀어본 결과 시간초과가 뜬다. (당연한 이야기)
그래서 흠.. 스택이라고 써있었는데.. 스택을 써볼까..
하다가 비교하고 마지막에 넣는 과정때문에 또 시간이 초과한다.
그리하여 나만의 작은 스택을 만들었다. print 객체는 대기 목록의 인덱스(로케이션과 비교를 위함)와 중요도를 저장하고
print 객체로 List같은 스택을 만들었다. 근데 왜 3개나 틀렸을까..
그리고 다시 생각해보니 큐로 풀면 될거 같은.. 아니 그냥 리스트로 풀면 되겠..? 어 뭐야 씹..
이렇게 정신을 차리고 보니.. 문제에 스택이라고 써 있는게 아닌 스택/큐라고 써있었고
나는 뻘짓에 얼굴이 시뻘게 져서 울그락 불그락 코드를 다시 바꿨다.
이제 나도 모르겠으니까 짜증나니까 말걸지 마세요.
그래서 오늘은 여기까지 풀 것 임.!
+++++++
최종 풀이
import java.util.*; class Solution { public int solution(int[] priorities, int location) { int count = 0; Queue<print> pq = new LinkedList<print>(); for(int i = 0 ; i < priorities.length; i++){ pq.offer(new print(i, priorities[i])); } while(!pq.isEmpty()){ print p = pq.poll(); boolean check = true; for(print tmp : pq){ if(tmp.priority > p.priority){ pq.offer(p); check = false; break; } } if(check) { count++; if(p.index == location) return count; } } return count; } public class print{ int index; int priority; print(int index, int priority){ this.index = index; this.priority = priority; } } }그냥 헛짓거리 안하고 큐로 했음..
사실 간과하고 있던 사실은 큐나 스택이나 뭐든 foreach로 슥 둘러볼 수 있다는 것임.. 미쳐 상상도 못하고 있다가
다른 사람 코드 보고 참고해서... 어 큐로 그냥 슥슥 풀어볼까..? 했음 그래서 풀림 뭐임..? 근데 그 전코드랑 다를게 무엇임..?
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] Level.2 가장 큰 수 (JAVA) (0) 2022.02.08 [프로그래머스] Level.2 H-Index (JAVA) (0) 2022.02.07 [프로그래머스] Level.2 - 문자열 압축(JAVA) (0) 2022.01.21 [프로그래머스] Level.2 - 전화번호 목록 (JAVA) (0) 2022.01.21 [프로그래머스] Level.2 - (1차)뉴스 클러스터링 (JAVA) (0) 2022.01.19