일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- bfs
- 해결
- spring
- IntelliJ
- HTTP
- 명령어
- 해시맵
- spring boot
- 스프링부트
- 배열
- 구름LEVEL
- Linux
- dfs
- docker
- 백엔드
- 코딩테스트
- 구현
- Java
- 문자열
- 도커
- 주니어
- HashMap
- 스타트업
- 스프링
- 인텔리제이
- 프로그래머스
- 자료구조
- 이직
- 개발자
- 스프링 부트
- Today
- Total
목록우선순위큐 (2)
마이의 개발 블로그
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 길이가 길고 주어진 숫자가 큰데 반해 뽑아서 사용해야하는 숫자는 가장 작은 두 개였기 때문에 효율적인 정렬을 위해 우선순위 큐(PriorityQueue)를 사용해서 문제를 해결했다. - scoville 배열을 우선순위 큐에 삽입 - (최소 스코빌 지수가 K보다 작으면서 2개 이상 스코빌지수가 남아있는 동안 반복하여) 가장 작은 두 수를 추출하여 혼합 후 다시 큐에 삽입 - 반복문 종료 후에도 최소 스코빌 지수가 K보다 작으면 실패, 아니면 성공 Note - 처음에 트리맵을 떠올렸는데, 둘을 비교해서 찾아보니 ..
배경 백준 1715번: 카드 정렬하기(그리디 알고리즘) 문제를 ArrayList로 풀다가 시간 초과가 뜨길래 문제를 해결하던 중 우선순위 큐를 적용해야만 한다는 걸 알게되었다. 처음에는 List 클래스의 sort() 메서드 사용 시 오름차순 정렬을 했기 때문에 연산이 완료된 값을 삭제할 때 배열이 전체 이동되어 시간이 많이 소요되는 거라고 생각했다. 그래서 내림차순 정렬로 바꾸고, ArrayList의 끝부분에서 삽입 삭제 시에 배열의 전체 복사나 이동이 없게끔 코드를 변경했는데, 여전히 시간초과가 뜨길래 결국 다른 사람들의 풀이를 검색할 수 밖에 없었다. //ArrayList를 사용한 예시 - 시간초과 while(list.size() > 1) { list.sort(Comparator.reverseOrde..