
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
콜라츠 수열은 매개변수 n이 1일 될 때까지 짝수일 때 n / 2를 홀수일 때 n * 3 + 1을 하는 공식을 갖는다.
그래서 n을 변수로 받아주고 list를 만들어 n을 먼저 추가하였다.
그 뒤 num이 1이 아닐 때까지 위 공식을 반복문으로 돌려준 후 그 수를 list 안에 담아
마지막에 list가 아닌 IntArray로 반환해야 하기에.toIntArray로 바꾸어주었다.
class Solution {
fun solution(n: Int): IntArray {
var num = n
val list = mutableListOf<Int>()
list.add(n)
while(num != 1){
if(num % 2 == 0){
num /= 2
list.add(num)
} else {
num = 3 * num + 1
list.add(num)
}
}
return list.toIntArray()
}
}
비교적 코드는 간단해 보이나 양쪽 공백을 제거하는 것은
.trim()을 통해 쉽게 할 수 있으나
중간의 공백들이 자꾸 배열로 들어가서 애를 먹은 문제이다.
그래서.filter로 그것이 공백이 아니라면 담을 수 있도록 만들었다.
그 후로 리스트로 담겨.toTypedArray()를 통해 타입을 맞춰주었다.
.isNotEmpty: 어떠한 값을 가질 때 True를 가짐.
class Solution {
fun solution(my_string: String): Array<String> {
var answer = my_string.split(" ").filter { it.isNotEmpty() }
return answer.toTypedArray()
}
}
이 문제는 모든 조건에서 arr1이 크면 1을 arr2 -1을 반환한다.
처음에는 size를 비교하여 반환하고 만약 배열 크기가 같다면 총합으로 비교한다.
만약 모두 같으면 0을 반환하기에
그 조건에 맞춰 값을 주었다.
class Solution {
fun solution(arr1: IntArray, arr2: IntArray): Int {
if (arr1.size < arr2.size) {
return -1
} else if( arr1.size > arr2.size) {
return 1
} else {
if (arr1.sum() < arr2.sum()){
return -1
} else if (arr1.sum() > arr2.sum()){
return 1
} else {
return 0
}
}
}
}
소수를 정수로 변환하는 것은
.toInt()이다.
class Solution {
fun solution(flo: Double): Int {
return flo.toInt()
}
}
이 문제는 m을 rn으로 바꾸어 주어야 한다.
그래서 문자열에.replace함수를 이용해 m을 rn으로 바꾸어 주었다.
class Solution {
fun solution(rny_string: String): String {
return rny_string.replace("m", "rn")
}
}
배열을 리스트로 만들어주는 법과 공백을 제거하는 함수를 배워 가는 문제들이였다.