
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
말 그대로 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가 포함 안된 문자열을 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)
}
}
점차 생각으로 풀 수 없는 것이 많기에 디버그를 통해 왜 이렇게 나오는지 확인하며
문제를 푸는 습관을 들이자.