![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ckhBqp/btsHFIXDXYa/qXkDxfAMu9gIlQLKJCMSPk/img.png)
코드카타 대충 만든 자판 문제 입출력 예시 targets의 요소(문자열)을 기준으로 각 요소마다 자판을 눌러야 되는횟수를 카운트하여 배열에 추가한 뒤 반환한다. 목표 문자열을 작성할 수 없는 경우에는 [-1]을 반환한다. 정답class Solution { // 반환값을 IntArray에서 List로 수정 fun solution(keymap: Array, targets: Array): List { // FCI(Find Closest Index) // keymap에서 가장 가까운 곳에 위치하는 특정 문자의 인덱스값을 반환하는 함수 fun fci(keymap: Array, t: Char): Int { var minIdx: Int? ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bu9wau/btsHDIDSRUw/zrdixXOsXKdU00G8g8WJdK/img.png)
코드카타 문자열 나누기 문제 입출력 예시 정답class Solution { fun solution(s: String): Int { var rs = s // 남은 문자열 var res = 0 // 분배한 문자열의 개수 // 남은 문자열이 공백이 될 때까지 문자열 분배 과정 반복 while (rs.isNotEmpty()) { // 변수 초기화 구문 var x = rs[0] // 첫 글자 var xCnt = 0 // x와 같은 글자가 나온 횟수 var nCnt = 0 // x와 다른 글자가 나온 횟수 va..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/X9CJe/btsHB652QYM/Tk6ReywcsAKvFMFUK1clbk/img.png)
코드카타 옹알이 (2) 문제 정답class Solution { fun solution(babbling: Array): Int { val able = listOf("aya", "ye", "woo", "ma") return babbling.count { i -> var word = i for (a in able) { if (!word.contains(a.repeat(2))) { word = word.replace(a, " ") } } word.all { it.isWhitespace() } } }..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/nodUt/btsHCA6hoW8/oaRIJuetOoTh8RUtGgaPT0/img.png)
코드카타 로또의 최고 순위와 최저 순위 문제 정답class Solution { fun solution(lottos: IntArray, win_nums: IntArray): IntArray { val m = lottos.count { it in win_nums } val z = lottos.count { it == 0 } fun getRank(m: Int): Int { return when (m) { 6 -> 1 5 -> 2 4 -> 3 3 -> 4 2 -> 5 else -> 6 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/nRbM6/btsHAqQ3hQO/ZvqCnJ1nK2LvSGKrNs7xK1/img.png)
코드카타 기사단원의 무기 문제 정답class Solution { fun solution(number: Int, limit: Int, power: Int): Int { fun findDiv(n: Int): Int { val s = Math.sqrt(n.toDouble()).toInt() return (1..s).count { n % it == 0 } * 2 - (if (s * s == n) 1 else 0) } var divArr = IntArray(number) { findDiv(it + 1) } divArr.forEachIndexed { i, v -> if (v > limit) divArr..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/xV5Jr/btsHz3fqLK5/26CBnG3l7JmT5dCf00Kvkk/img.png)
코드카타 덧칠하기 문제 정답class Solution { fun solution(n: Int, m: Int, section: IntArray): Int { var pos = 0 var res = 0 for (i in section.indices) { if (pos 해당 문제는 그리디 알고리즘을 통해 해결할 수 있다. var pos = 0var res = 0pos는 페인트를 칠하기 시작하는 현재 위치,res는 페인트를 칠해야 되는 최소 횟수에 해당한다. for (i in section.indices) { if (pos 페인트를 칠해야 되는 구역을 순회하며 롤러의 위치가 해당 구역보다 뒤에 위치한다면 롤러의 위치를 해당구역에서 페인트를 칠..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GhA29/btsHv5l26lS/FFtnhgEkVQbPnvWXJSOxd1/img.png)
코드카타 모의고사 문제 정답class Solution { fun solution(answers: IntArray): IntArray { val patterns = listOf( listOf(1, 2, 3, 4, 5), listOf(2, 1, 2, 3, 2, 4, 2, 5), listOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5) ) val scores = IntArray(3) for ((i, answer) in answers.withIndex()) { for ((j, pattern) in patterns.withIndex()) { ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/emDWUe/btsHwP22HYy/LKSJS6ilbtyTKH3u18NGv0/img.png)
코드카타 카드 뭉치 문제 정답class Solution { fun solution(cards1: Array, cards2: Array, goal: Array): String { var a = 0 var b = 0 for (i in goal) { when { a a++ b b++ else -> return "No" } } return "Yes" }}각 단어를 goal배열에서 순차적으로 확인하며 두 카드 뭉치에서 차례대로 단어를 비교해준다. 카드를 순차적으로 배치하여 goal을 만들 수 있다면 "Yes"를,그렇지..