
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
순서 바꾸기는 내가 선택한 n개의 수를 뒤로 보내는 배열을 만든다.
그래서 뒤로 보낼 배열들을 미리 answer로 받고
그 뒤에 n 이후의 수를 미리 당겨 뒤에 추가해 주는 식으로 풀었다.
class Solution {
fun solution(num_list: IntArray, n: Int): IntArray {
var answer = num_list.toMutableList().take(n)
var result : IntArray = intArrayOf()
for(x in n until num_list.size){
result += num_list[x]
}
return result + answer.toIntArray()
}
}
정답을 풀고 다른 사람의 풀이를 봤는데
sliceArray()로 쉽게 풀 수 있다는 알수 있었다.
- sliceArray(조건) : 조건의 인덱스만큼 요소를 가져와 배열로 만든다.
class Solution {
fun solution(num_list: IntArray, n: Int) = num_list.sliceArray(n until num_list.size) + num_list.sliceArray(0 until n)
}
이 문제는 배열의 길이가 11이상이면 그 수를 모두 더하고 이하면 모두 곱해주는 문제이다.
조건에 따라 값을 더하는.sum()과 곱을 반복문을 통해 곱해주었다.
class Solution {
fun solution(num_list: IntArray): Int {
var answer: Int = 1
if(num_list.size >= 11){
answer = num_list.sum()
} else {
for (x in num_list) {
answer *= x
}
}
return answer
}
}
kotlin에서 대문자로 바꾸는 것은
.uppercase()이다.
class Solution {
fun solution(myString: String) = myString.uppercase()
}
이 문제는 arr 배열 안 조건에 따라 수를 변환하는 것이다. 저번에 풀었을 때 런타임 오류가 많ㄴ이 났었는데 속도를 위해서
mutableList로 먼저 만든 뒤toIntArray()를 통해
변환시켜주었다.
class Solution {
fun solution(arr: IntArray): IntArray {
val answer = mutableListOf<Int>()
for (x in arr){
if (x < 50 && x % 2 != 0){
answer.add(x * 2)
} else if (x >= 50 && x % 2 == 0){
answer.add(x / 2)
} else {
answer.add(x)
}
}
return answer.toIntArray()
}
}
이 문제는 문제의 조건을 보고 답을 알아냈는데 먼저 반복문을 통해 배열의 인덱스를 가져와주고
처음에는 1부터 시작하여 첫 인덱스와 두 번째 인덱스의 차를 이용하여 answer 안으로 넣어주며
답을 구할 수 있었다.
class Solution {
fun solution(numLog: IntArray): String {
var answer: String = ""
for(x in 1 until numLog.size){
if(numLog[x] - numLog[x - 1] == 1){
answer += 'w'
} else if (numLog[x] - numLog[x - 1] == -1){
answer += 's'
} else if (numLog[x] - numLog[x - 1] == 10){
answer += 'd'
} else {
answer += 'a'
}
}
return answer
}
}
필자가 먼저 생각한 것도
when문이었는데 아직 실력이 부족한 것 같다.
class Solution {
fun solution(numLog: IntArray): String {
return (1..numLog.lastIndex).map {
when (numLog[it] - numLog[it-1]) {
1 -> 'w'
-1 -> 's'
10 -> 'd'
else -> 'a'
}
}.joinToString("")
}
}
실력이 많이 늘어가는 과정인 것 같다.
문제를 보고 푸는 실력이 올라가는 느낌이 들었다.
꾸준히 문제를 풀어보자.