본문 바로가기

분류 전체보기113

[프로그래머스] 정렬 : K번째수 Kotlin 배열의 구간을 자르고 해당 부분 배열을 정렬하는 문제이다. Kotlin에 있는 slice라는 Array 내장 함수를 이용해 잘라주고 sort를 사용해 정렬한다! * sort()는 객체를 정렬하고 return하지 않는다 (unit), sorted()는 정렬된 객체를 return한다. 그리고 인덱스에 맞는 값을 return 해준다 어렵지 않은 문제이고 정렬을 사용할 수 있는가를 물어보는 것 같다. class Solution { fun solution(array: IntArray, commands: Array): IntArray { var answer = IntArray(commands.size) for(i in 0..answer.size-1){ var tempArray = array.slice(command.. 2020. 9. 26.
[프로그래머스] 힙 : 이중우선순위큐 Kotlin I를 만나면 Queue에 넣어주고 D 1을 만나면 최댓값, D -1을 만나면 최솟값을 삭제하면 되는 간단한 문제이다. 흠,, 그러나 우리는 Queue에서 최댓값과 최솟값을 같이 컨트롤 하기가 까다롭고 그것을 해결하라는게 이 문제의 의도인거 같다. 힙 유형에 해당하는 만큼 Priority Queue를 사용해보고자 했고 Max Heap, Min Heap 2가지를 사용했다. 그래서 D 1일 때는 Max Heap쪽으로 옮기고, D -1일 때는 Min Heap으로 옮긴 후 Poll 해준다. 그러면 자동 정렬이 된다! 효율적인거 같지는 않지만,,, Queue는 한쪽으로 밖에 안되니까,,, Deque로 자동 정렬하며 할 수 있는 방법이 있을까..? import java.util.* class Solution { fu.. 2020. 9. 16.
[프로그래머스] 힙 : 디스크 컨트롤러 Kotlin 이 문제를 푸는데 핵심이 되는 것은 특정 시점에서 실행시킬 작업이 여러 가지일 때 어떤 것을 실행시킬지 선택하는 것이다. 예제에서 보면 알 수 있드시 작업시간이 짧은 작업을 먼저 처리할 때 평균 시간이 낮은 것을 알 수 있다. 운영체제 스케줄링 중 SJF(Shortest Job First)와 로직이 동일한 것으로 보인다. 무튼, 우리가 이 문제를 풀기 위해서 핸들링 해야하는 포인트는 2가지이다. 1. 어떤 Job이 남았는가? 2. 지금 내가 실행시킬 수 있는 Job은 무엇인가? 우리는 시간을 카운팅 하면서 남아있는 Job 중 실행할 수 있는 Job을 가져오기 위해 이 문제 유형인 힙(priority queue)를 사용할 것이다. 왜냐면 priority Queue를 사용하면 특정 값으로 정렬된 순서대로 값.. 2020. 9. 15.
[프로그래머스] 힙 : 더 맵게 Java 배열에서 가장 낮은 숫자와 그 다음으로 낮은 숫자 2개를 찾는다. 그 이후 공식에 맞게 조합해서 배열에 넣고 다시 가장 작은 숫자 2개를 찾는 것을 반복한다. 그런데 여기서 배번 배열을 탐색하는 것은 효율성 측면에서 떨어지고 배열에서 원소를 빼고 넣는 다는 것은 어려운일이다. 그래서 힙을 사용해서 푼다! Max Heap은 가장 큰 숫자부터 차례대로 얻을 수 있는 자료구조이고 Min Heap은 가장 작은 숫자부터 얻을 수 있는 자료구조이다. 보통은 트리나 배열로 Heap을 구현하긴 하는데 우리는 이미 만들어진 자료구조를 사용할 것이다. Max Heap을 다른 자료구조로 PriorityQueue 와도 같다. PriorityQueue는 우선 순위 큐로서 가장 작은 숫자가 우선시 되게 기본으로 구현되어있다. 즉.. 2020. 9. 9.