코딩테스트22 [프로그래머스] 힙 : 더 맵게 Java 배열에서 가장 낮은 숫자와 그 다음으로 낮은 숫자 2개를 찾는다. 그 이후 공식에 맞게 조합해서 배열에 넣고 다시 가장 작은 숫자 2개를 찾는 것을 반복한다. 그런데 여기서 배번 배열을 탐색하는 것은 효율성 측면에서 떨어지고 배열에서 원소를 빼고 넣는 다는 것은 어려운일이다. 그래서 힙을 사용해서 푼다! Max Heap은 가장 큰 숫자부터 차례대로 얻을 수 있는 자료구조이고 Min Heap은 가장 작은 숫자부터 얻을 수 있는 자료구조이다. 보통은 트리나 배열로 Heap을 구현하긴 하는데 우리는 이미 만들어진 자료구조를 사용할 것이다. Max Heap을 다른 자료구조로 PriorityQueue 와도 같다. PriorityQueue는 우선 순위 큐로서 가장 작은 숫자가 우선시 되게 기본으로 구현되어있다. 즉.. 2020. 9. 9. [프로그래머스] 스택/큐 : 프린터 Kotlin 문제를 읽어보면 헷갈린다. 검사 할때마다 맨 앞의 원소가 제일 큰지 배열을 검사하게 되면 구현은 되겠지만 효율성 측면에서 좋지 않다. 그래서 대기목록 큐와 중요도로 정렬한 큐를 이용한다. 대기목록의 큐는 중요도와 index를 Pair로 잡아서 중요도로는 정렬된 큐의 값과 같은지 비교할 때 사용하고 index는 내가 찾던 문서인지 비교할 때 사용하자. 문서의 중요도를 내림차순으로 정렬하고 중요도가 문서 큐와 같으면 인쇄하고 아니면 큐의 맨 뒤로 넣어주자. 정렬된 문서의 중요도 순으로 인쇄되고 대기 목록은 그대로기 때문에 중요도를 정렬해도 된다. 이렇게 하면 매번 비교할 때마다 배열을 탐색하지 않아도 된다. import java.util.* class Solution { fun solution(priorit.. 2020. 9. 8. [프로그래머스] 스택/큐 : 다리를 지나는 트럭 Kotlin 다리와 대기 트럭을 Queue로 선언해준다. 대기 트럭은 입력 값에서 가져오고 다리 Queue의 크기를 다리 길이만큼 해주기 위해 초기에 0으로 채워서 초기화 한다. 대기 트럭에서 poll한 트럭을 다리 Queue로 넣어주고 다리 큐에서 poll을 통해 맨 앞의 트럭을 빼준다. 이때 다리를 지나는 트럭의 무게를 계산해서 트럭을 옮겨준다. 그리고 다리에 모든 데이터가 없어지면 종료한다. import java.util.* class Solution { fun solution(bridge_length: Int, weight: Int, truck_weights: IntArray): Int { var answer = 0 var weightAble = weight var queue:Queue = LinkedList.. 2020. 9. 8. [프로그래머스] 스택/큐 : 기능개발 Kotlin 이전의 주식 문제와 비슷하다. 개발하는데 필요한 일수를 먼저 구하고 큐에 넣어준다. 큐의 맨 앞에 작업을 기준으로 둔다. 기준보다 이후의 일수가 작다면 기준이 끝날 때까지 기다려야 하는 것이므로 기다리며 카운팅을 한다. 기준보다 일수가 증가하면 해당 기능이 개발되었을 때에는 앞의 작업들은 전부 배포가 될것이기 때문에 앞에 배포가 되지 않은 것들을 전부 배포했다고 하고 배포 횟수를 늘려주자. 큐를 이용해서 필요한 일수를 넣어놓고 peek이나 poll로 하나씩 큐에서 빼서 사용하면 편하다! import java.util.* class Solution { fun solution(progresses: IntArray, speeds: IntArray): IntArray { var answer:IntArray va.. 2020. 9. 7. 이전 1 2 3 4 5 6 다음