반응형
오늘 풀어볼 문제는 '프린터'였지만 프로그래머스에서 아무리 찾아봐도 안나와서
챗GPT한테 물어보니 프린터 문제가 프로세스로 바뀌었단다.... 챗GPT를 너무 맹신하면 안 된다.
휴 내 발등을 한 두번 찍는게 아니란 말이지.
아무튼 이번 문제는 처음 풀어보는 문제다. 그래서 과거 코드가 없다.
이번에는 Deque를 사용했다. 영한쓰가 자바 강의에서 stack과 queue보다는 Deque를 사용하라했다.
자세한 내용은 기억이 안나서 챗GPT한테 물어봤더니
1. 단순한 큐 동작만 필요하면 Queue가 빠름
2. 양방향 삽입/삭제가 필요한 경우라면 Deque 사용이 더 유리함
3. 일반적으로 ArrayDeque가 가장 빠르고 효율적이므로 우선 선택하는게 좋다
이렇게 정리해줬다.
코드
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int targetIdx = location;
int removeCnt = 0;
Deque<Integer> deque = new ArrayDeque<>();
for(int i = 0; i < priorities.length; i++) {
deque.offer(priorities[i]);
}
while(!deque.isEmpty()) {
int curValue = deque.poll();
if(hasGreaterValue(curValue, deque)) {
deque.offer(curValue);
if (targetIdx == 0) targetIdx = deque.size() - 1;
else targetIdx--;
} else {
removeCnt++;
if(targetIdx == 0) return removeCnt;
else targetIdx--;
}
}
return removeCnt;
}
public static boolean hasGreaterValue(int num, Deque<Integer> deque) {
for (int value : deque) {
if(num < value) return true;
}
return false;
}
}
문제를 풀고 3점을 얻었다.
이번 문제도 시간을 꽤나 잡아먹었는데.. 챗GPT한테 테케 추천해달라해서
그대로 사용했다. 그랬더니 한 케이스만 계속 실패가 떠서 코드를 이리저리 바꾸고 해봤는데 도저히 답을 모르겠어서
직접 로직을 손으로 그려봤다(?)
아무리 봐도 내가 한게 맞는 거 같아 챗GPT한테 물어봤다.
구구절절 답변을 줬는데 결론은..ㅋ
어..이..없..어
그래서 그냥 제출했더니... 통과됐다 ㅎ
오늘도 즐거운 코딩~!
내일 출근한다.....
반응형