
코드카타 푸드파이트 대회 문제 문제가 설명이 좀 길어서 테스트케이스를 보며 뭘 구현해야 되는지 정리해보겠다. 테스트케이스 확인 저렇게 문제가 답도 없이 길 때는 테스트케이스를 통해 코드에서 무엇을 구현해야될지 감을 잡으면 된다. 첫번째 테스트케이스를 통해 설명을 하자면 food 배열인 [1, 3, 4, 6]에서1은 물, 3은 첫번째 음식, 4는 두번째 음식, 6은 세번째 음식에 해당한다. 두 사람이 먹을 n번째 음식들을 각각 공평하게 2로 나눈 다음 n을 그 수만큼 반복해서 result에 더하고,"왼쪽의 선수가 먹을 음식의 배치 + 0 + 오른쪽 선수가 먹을 음식의 배치" 를 반환하면 된다. 정답class Solution { fun solution(food: IntArray): String {..

코드카타 가장 가까운 글자 문제 정답class Solution { fun solution(s: String): IntArray { var res = IntArray(s.length) { -1 } var arr = s.toCharArray() var sMap = mutableMapOf() for (i in arr.indices) { if (sMap.containsKey(arr[i])) { res[i] = i - sMap[arr[i]]!! } sMap[arr[i]] = i } return res }}res의 모든 요소를 -1로 초기..

코트카타 두 개 뽑아서 더하기 문제 정답class Solution { fun solution(numbers: IntArray): IntArray { val resSet = sortedSetOf() for (i in numbers.indices) { for (j in i + 1 until numbers.size) { resSet.add(numbers[i] + numbers[j]) } } return resSet.toIntArray() }}사전캠프 10일차에 풀었던 '삼총사' 문제의 로직을 활용해서 풀 수 있는 문제이다. 주어진 배열에서 수를 2개씩 뽑아야 하므로 2중 for문을 ..

코트카타 K번째수 문제 정답class Solution { fun solution(array: IntArray, commands: Array): IntArray { val res = arrayListOf() for (command in commands) { val i = command[0] - 1 val j = command[1] - 1 val k = command[2] - 1 res.add(array.slice(i..j).sorted()[k]) } return res.toIntArray() }}arrayListOf와 for문을 통해 초기화한 배열요소들을 이용해서 풀..

코트카타 문자열 내 마음대로 정렬하기 문제 정답class Solution { fun solution(strings: Array, n: Int): List { return strings.sortedWith(compareBy({ it[n] }, { it })) }}'sortedWith(compareBy())' 함수를 사용하면 쉽게 풀 수 있는 문제이다. sortedWith(compareBy())strings.sortedWith(compareBy({n}))해당 함수는 n의 값을 기준으로 strings(List)의 요소들을 정렬한다. strings.sortedWith(compareBy({ it[n] }, { it }))compareBy는 다수의 선택자를 인자로 활용할 수 있다. 해당 ..

코드카타 시저 암호 문제 정답class Solution { fun solution(s: String, n: Int): String { return s.map { c -> when { c.isLowerCase() -> rotateChar(c, n, 'a') c.isUpperCase() -> rotateChar(c, n, 'A') else -> c } }.joinToString("") } fun rotateChar(c: Char, n: Int, base: Char): Char { return ((c - base + n) % 26 + ..

코드카타 크기가 작은 부분 문자열 문제 정답class Solution { fun solution(t: String, p: String): Int { val arr = arrayListOf() for (i in 0..(t.length - p.length + 1)) { if (i + p.length - 1 나같은 경우는 빈 배열을 하나 선언해 거기다 부분 문자열을 추가하고그 배열의 요소를 하나하나 검사하는 방식으로 풀었다. 다른 풀이class Solution { fun solution(t: String, p: String): Int { // 7 3 return (0..t.length - p.length) .map{ ..

코드카타 이상한 문자 만들기 문제 정답class Solution { fun solution(s: String): String { val words = s.split(" ").map { w -> w.mapIndexed { i, c -> if (i % 2 == 0) c.uppercaseChar() else c.lowercaseChar() }.joinToString("") } return words.joinToString(" ") }}map과 mapIndexed 함수, joinToString()을 적절히 활용하면 풀 수 있는 문제이다. mapIndexed 함수val ..