[A&I Code Camp] Day19 (sliceArray, replaceFirst)

Hood·2024년 10월 3일

A&I Code Camp

목록 보기
19/38
post-thumbnail

✍   Kotlin을 사용한 프로그래머스 Lv. 0 문제 풀기

소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는 kotlin을 기반으로 작성합니다.


n 번째 원소부터

말 그대로 n 번째 원소부터 배열안에 담으면 되기에
.sliceArray를 통해 배열에 담아 주었다.

  • .sliceArray(시작 인덱스, 끝 인덱스) : 시작 인덱스부터 끝 인덱스까지 배열에 담음
class Solution {
    fun solution(num_list: IntArray, n: Int): IntArray {
        return num_list.sliceArray(n-1 until num_list.size)
    }
}

ad 제거하기

ad를 재거하기 위해 반복문으로 전체 인덱스르 돌려주고 ad가 포함되있다면 넘기고
ad가 포함 안된 문자열을 answer 리스트안에 담고 .toTypeArray()
배열을 반환하도록 만들어주었다.

class Solution {
    fun solution(strArr: Array<String>): Array<String> {
        val answer = mutableListOf<String>()
        for(x in strArr.indices){
            if(strArr[x].contains("ad")){
                continue
            } else {
                answer.add(strArr[x])
            }
        }
        return answer.toTypedArray()
    }
}

.filter 를 하면 쉽게 풀 수 있는데 다음부터는 이렇게 풀어야겠다.

class Solution {
    fun solution(strArr: Array<String>) = strArr.filter { !it.contains("ad") }
}

주사위의 개수

주사위 갯수는 box 크기에 n 크기 주사위가 얼마나 들어가나에 대한 문제이다.
그래서 box 가로, 세로, 높이를 n으로 나누고 곱한 것을 반환해 얼마나 들어가는지 풀어주었다.

class Solution {
    fun solution(box: IntArray, n: Int): Int {
        val x = box[0] / n
        val y = box[1] / n
        val z = box[2] / n
        return x * y * z
    }
}

약수 구하기

숫자 n의 약수를 구하는 문제이다. 반복문으로 1부터 n까지를 돌려주고 n을 x로 나눠주었을 때
나머지가 0이 나온다는 건 그것의 약수이기에 answer 배열 안에 넣어 풀어주었다.

class Solution {
    fun solution(n: Int): IntArray {
        var answer: IntArray = intArrayOf()
        for (x in 1..n){
            if(n % x == 0){
                answer += x
            }
        }
        return answer
    }
}

인덱스 바꾸기

인덱스 바꾸는 것은 .replaceFirst() 통해 풀어주었다.
이유는 .replace()는 특정 모든 oldChar를 newChar로 바꿔주기에
strNum2를 미리 담아두고 첫 변환 때 num1자리의 첫 문자를 num2에 바꿔주고
그러면 num2안애 문자를 알 수 없기에 이때는 미리 담았던 strNum2의 문자를 가져와
num1자리에 strNum2를 넣어주어 두 자리를 바꿔주었다.

  • .replaceFirst() : 모든 매칭된 값이 아닌 시작부터 처음으로 매칭되는
    문자 또는 문자열만 바꾼다.
class Solution {
    fun solution(my_string: String, num1: Int, num2: Int): String {
        val strNum2 = my_string[num2]
        val str = my_string.replaceFirst(my_string[num2], my_string[num1])
        return str.replaceFirst(my_string[num1], strNum2)
    }
}

📌결론

점차 생각으로 풀 수 없는 것이 많기에 디버그를 통해 왜 이렇게 나오는지 확인하며
문제를 푸는 습관을 들이자.

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글