프로그래머스
-
프로그래머스 - 네트워크알고리즘 문제 풀이 2020. 12. 17. 00:12
index를 set 으로 만들어서 겹치는 부분이 있는 경우 합치는 방식으로 풀었습니다. /* * 2020-12-16 * https://programmers.co.kr/learn/courses/30/lessons/43162 */ fun network(n: Int, computers: Array): Int { // index set 의 set 생성 val networkSet: Set = computers.map { c -> c.toList().mapIndexedNotNull { i, n -> if (n == 1) { i } else { null } }.toSet() }.toSet() println(networkSet) // 네트워크 set 의 set 생성 val networkResultSet: Mutable..
-
프로그래머스 - 타겟 넘버알고리즘 문제 풀이 2020. 12. 9. 00:00
풀이 /* * 2020-12-08 * https://programmers.co.kr/learn/courses/30/lessons/43165 */ var answer = 0 fun targetNumber(numbers: IntArray, target: Int): Int { answer = 0 addNumber(0, numbers, 0, target) return answer } tailrec fun addNumber(sum: Int, numbers: IntArray, index: Int, target: Int) { if (numbers.count() == index) { if (sum == target) answer++ } else { addNumber(sum + numbers[index], numbers..
-
프로그래머스 - 이중우선순위큐알고리즘 문제 풀이 2020. 11. 7. 19:41
풀이 import java.util.* /* * 2020-11-07 * https://programmers.co.kr/learn/courses/30/lessons/42628 */ fun solveDoublePriorityQueue(operations: Array): IntArray { val minQueue = PriorityQueue { n1, n2 -> n1 - n2 } val maxQueue = PriorityQueue { n1, n2 -> n2 - n1 } operations.forEach { val (arg, numStr) = it.split(" ") val num = numStr.toInt() if (arg == "I") { minQueue.add(num) maxQueue.add(num) } ..
-
프로그래머스 - 디스크 컨트롤러알고리즘 문제 풀이 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. 9. 7. 22:19
package programmers.heap; /* * 2020-09-07 * https://programmers.co.kr/learn/courses/30/lessons/42626?language=java */ import java.util.PriorityQueue; import java.util.concurrent.atomic.AtomicBoolean; public class MoreSpicy { public int solution(int[] scoville, int K) { PriorityQueue scovilleQueue = new PriorityQueue(); for (int i = 0; i < scoville.length; i++) { scovilleQueue.add(scoville[i]); }..
-
프로그래머스 - 카펫카테고리 없음 2020. 9. 2. 22:10
import kotlin.test.assertEquals /* * 2020-09-02 * https://programmers.co.kr/learn/courses/30/lessons/42842 */ class Carpet { fun solution(brown: Int, yellow: Int): IntArray { var answer = intArrayOf() for (i in 1..yellow) { for (j in 1..yellow) { if (i >= j && i * j == yellow && (i + 2) * (j + 2) - yellow == brown) { return intArrayOf(i + 2, j + 2) } } } return answer } } fun main(args: Array) {..
-
프로그래머스 - 소수 찾기알고리즘 문제 풀이 2020. 9. 2. 21:30
import kotlin.test.assertEquals /* * 2020-09-02 * https://programmers.co.kr/learn/courses/30/lessons/42839 */ class FindPrimeNumber { fun solution(numbers: String): Int { val numberValues = numbers.map { it.toString() } val numbersGroup = numbers.groupBy { it } val numberList = ArrayList() val newNumberList = ArrayList() for (i in 0 until numbers.count()) { if (numberList.isEmpty()) { numberValu..
-
프로그래머스 - 모의고사알고리즘 문제 풀이 2020. 8. 24. 21:53
/* * 2020-08-24 * https://programmers.co.kr/learn/courses/30/lessons/42840 */ class PracticeTest { fun solution(answers: IntArray): IntArray { val first = listOf(1, 2, 3, 4, 5) val second = listOf(2, 1, 2, 3, 2, 4, 2, 5) val third = listOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5) var firstCnt = 0 var secondCnt = 0 var thirdCnt = 0 answers.forEachIndexed { i, answer -> if (answer == first[i % first.count()]..