풀이
-
프로그래머스 - 디스크 컨트롤러알고리즘 문제 풀이 2020. 10. 28. 23:11
package programmers.heap /* * 2020-10-28 * https://programmers.co.kr/learn/courses/30/lessons/42627 */ import java.util.* class DiskController { fun solution(jobs: Array): Int { // 입력 배열 정렬 val jobQueue = PriorityQueue { o1, o2 -> when { o1[0] > o2[0] -> 1 o1[0] -1 else -> o1[1].compareTo(o2[1]) } } jobs.forEach { jobQueue.add(it) } val queue = PriorityQueue { o1, o2 -> o1[1].compareT..
-
프로그래머스 - 기능개발알고리즘 문제 풀이 2020. 8. 5. 23:09
import kotlin.math.ceil /* * 2020-08-05 * https://programmers.co.kr/learn/courses/30/lessons/42586?language=kotlin */ class FunctionDevelopment { fun solution(progresses: IntArray, speeds: IntArray): IntArray { var answer = ArrayList() val workingDays = progresses.mapIndexed { i, progress -> ceil((100-progress).div(speeds[i].toDouble())).toInt() } var prevWork = workingDays.first() var cnt = 1 w..
-
프로그래머스 - 쇠막대알고리즘 문제 풀이 2020. 7. 28. 23:04
/* * 2020-07-28 * https://programmers.co.kr/learn/courses/30/lessons/42585 */ class IronBar { fun solution(arrangement: String): Int { /* val ironBarList = ArrayList() var answer = 0 var prev:Char? = null arrangement.forEach { if(it == '('){ ironBarList.add(1) } if(it == ')'){ if(prev == '('){ val openCount = ironBarList.removeAt(ironBarList.count()-1) - 1 if(openCount > ..
-
프로그래머스 - 탑알고리즘 문제 풀이 2020. 7. 27. 22:42
/* * 2020-07-27 * https://programmers.co.kr/learn/courses/30/lessons/42588?language=kotlin */ class Tower { fun solution(heights: IntArray): IntArray { val reversedHeights = heights.reversed() return reversedHeights.mapIndexed { i, h -> val index = reversedHeights.slice(0 + i + 1 until heights.count()).indexOfFirst { it > h } if (index > -1) { heights.count() - index - i - 1 } else { 0 } }.rever..
-
프로그래머스 - H-Index알고리즘 문제 풀이 2020. 7. 26. 23:34
아래와 같은 테스트케이스를 추가하고 실행해보는 것을 강력하게 추천한다. input output 5,5,5,5 4 class HIndex { fun solution(citations: IntArray): Int { var result = 0 val sortedList = citations.sortedDescending() val max = citations.max() ?: 0 for (i in 0..max) { val index = sortedList.indexOfLast { it >= i } + 1 if (index > result) { result = i } } return result } } fun main() { val result = HIndex().solution( // intArrayOf(3,..
-
프로그래머스 - 가장 큰 수알고리즘 문제 풀이 2020. 7. 24. 23:18
class LargestNumber { fun solution(numbers: IntArray): String { var answer = "" numbers.sortedWith(Comparator { n1, n2 -> val n1s = n1.toString() val n2s = n2.toString() when { n1s + n2s > n2s + n1s -> -1 n1s + n2s 1 else -> 0 } }).forEach { if (answer != "0" || it != 0) { answer += it } } return answer } } fun main() { val result = LargestNumber().solution( intArrayOf(3, 3, 753, ..
-
프로그래머스 - 베스트 앨범알고리즘 문제 풀이 2020. 7. 13. 22:45
최근 프로그래머스에 있는 베스트 앨범 문제를 풀어보았는 데다른 사람의 코드를 보고 아주 놀라서 정리해 보았다.아래의 코드로 결과가 나오는데 딱 보기에는 이해가 되지 않아서한줄씩 출력해본 결과를 정리했다.genres.indices.groupBy { genres[it] } .toList() .sortedByDescending { it.second.sumBy { plays[it] } } .map { it.second.sortedByDescending { plays[it] }.take(2) } .flatten() .toIntArray()genres.indices >>> indices: 0..4indicesReturns the range of valid indices for the array. Returns an..