본문 바로가기

코딩테스트22

[프로그래머스] 정렬 : 가장 큰 수 이번 문제도 정렬하는 문제이다. 배열의 정렬 기준을 커스텀 할 수 있는가를 물어보는 문제인 것 같다. 여기서 정렬 기준은 기존의 각 항목들이 큰지 비교하는 것이 아닌 두개를 붙였을 때 어떤게 더 큰지 비교해야한다. 즉, 10과 2를 비교할 때 10 > 2이면 102로 정렬이 되기 때문에 안되고 102와 210을 비교해야한다. Kotlin에서는 collection 객체에 sortedWith를 통해 정렬 기준을 부여할 수 있다. import java.util.* class Solution { fun solution(numbers: IntArray): String { var answer = "" numbers.sortedWith(Comparator({ o1, o2 -> "$o2$o1".compareTo("$o.. 2020. 9. 26.
[프로그래머스] 정렬 : 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.