프로그래머스 힙 문제. 이중우선순위큐 (파이썬)

ppm_Vely·2022년 6월 21일
0

코딩테스트

목록 보기
15/21

나는 heapq 안쓰고 deque로 사용했다.

heapq를 써서 정렬해야 하는 필요가 없고

명령어 순서대로 "FIFO" 로직을 갖기 때문에 deque를 사용했다.

문제


시도1. (실패)

문제점 1.

처음에 걸린 에러는 ValueError: max() arg is an empty sequence

이게 무엇인가 찾아봤더니

빈리스트의 경우 max() 또는 min()을 사용하게 되면 요소가 없어 값이 없기 때문에 ValueError가 생기는 것이다.

즉, 파이썬에서 돌려보면..


빈리스트 였기 때문에 코드 에러가 있었던 것이다.

그렇다면 내가 놓친 테스트케이스는 빈 리스트 상태에서 요소의 max or min을 찾아 삭제하는 경우라는 것이다.

해결하기 위해 remove하기 전 빈 리스트는 거르기 위해

위에 if not answer: return [0,0] 을 추가했다. (※끝이 아니므로 마지막 부분 이어서 꼭 꼭 읽기!!)

문제 해결~~

고민점 1. (근데 이건 문제해결과 상관이 없으므로 그냥 참고..!!※)

위에 코드결과와 같이 테스트 케이스 2개에서 에러걸렸다.

왜일까..문제를 다시 읽어보니 최댓값/최소값이 둘 이상의 경우, 하나만 삭제합니다. 가 있다.

아하..그렇담 내가 생각하지 못한 케이스는 [1,2,3,3] 인데

2개 이상인 최댓값 3을 remove하면 어떻게 되나?

결론은..2개 이상이라도 하나만 삭제된다.

이 고민점은 해결할 필요가 없다.

문제 풀면서 헷갈렸기에 그냥 참고사항으로 넣었다.

그렇다면 다시 문제점으로 돌아와서!
문제를 보면 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시한다. 라느 말이 있다.
문제점1에서 해결할 때 삭제 명령어 일겨우 빈 리스트는 [0,0]으로 return 해주었는데
그게 아니라 "무시"해야 하므로 "continue"로 해줘야 한다.!!

문제를 좀더 꼼꼼히 읽어보자...!!

시도2. (정답)

profile
오늘도 개발중인 ppm's Programming Log

0개의 댓글