728x90
반응형

Kotlin/코딩테스트 33

[프로그래머스] 피로도 - kotlin

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. import kotlin.math.max class Solution { fun solution(k: In..

[프로그래머스] 할인 행사 - kotlin

XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. class Solution { fun solution(want: Array, number: IntArray, discount: Array): Int { var answer: Int = 0 val numberArr = number.copyOf() val wantMap = mutableMapOf() for ((i, item) in want.withIndex()) { wantMap[..

[프로그래머스] 연속 부분 수열 합의 개수 - kotlin

철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. class Solution { fun solution(elements: IntArray): Int { val intSet = elements.toMutableSet() val intArr = elements.copyOf() val size = elements.size for (i in 1 until size) { for (idx in intArr.indices) { ..

[프로그래머스] 귤 고르기 - kotlin

경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. class Solution { fun solution(k: Int, tangerine: IntArray): Int { var answer: Int = 0 val map: MutableMap = mutableMapOf() for (i in tangerine) { map[i] = (map[i] ?: 0) + 1 } val countList = map.values.toList().sortedDescending() var cnt = 0 for ((idx, ..

[프로그래머스] 기사단원의 무기 - kotlin

숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. import kotlin.math.sqrt class Solution { fun solution(number: Int, limit: Int, power: Int): Int { var answer: Int = 0 for (i in 1..number) { answer += powerGauge(i, limit, pow..

[프로그래머스] 숫자 짝꿍 - kotlin

두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. import kotlin.math.min class Solution { fun solution(X: String, Y: String): String { val xMap = X.groupingBy { chr -> chr }.eachCount() val yMap = Y.groupingBy { chr -> chr }.eachCount() val sb = StringBuil..

[프로그래머스] 옹알이 (2) - kotlin

머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. class Solution { fun solution(babbling: Array): Int { val strRegex = "ayaaya|yeye|woowoo|mama".toRegex() val strRegex2 = "aya|ye|woo|ma".toRegex() return babbling.map { b -> b.re..

[프로그래머스] 달리기 경주 - kotlin

얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. class Solution { fun solution(players: Array, callings: Array): Array { val rank: MutableMap = players.mapIndexed { i, player -> player to i } .toMap() .toMutableMap() for (..

[프로그래머스] 문자열 나누기 - kotlin

문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. class Solution { fun solution(s: String): Int { var answer: Int = 0 var chr = ' ' var cnt = 0 for (c in s) { when (chr) { ' ', c -> { cnt++ chr = c } else -> { cnt-- } } if (cnt == 0) { answer++ chr = ' ' ..

[프로그래머스] 성격 유형 검사하기 - kotlin

나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. class Solution { fun solution(survey: Array, choices: IntArray): String { val mutableMap = mutableMapOf( "R" to 0, "T" to 0, "C" to 0, "F" to 0, "J" to 0, "M" to 0, "A" to 0, "N" to 0) for ((idx, value) in choices.withIndex()) { when (value) { 1,2,3 -> { val key = survey[idx][0].toString() mutableMap[..

728x90
반응형