
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
암호해독은 문자열이 주어지고 code 값 만큼 알파벳을 인덱싱하여 코드를 찾는 문제입니다.
문자열을 인덱스 하면 0부터 시작하니 일단 code에 -1을 빼주었고 코틀린은 ..을 사용하게되면
그 값까지 포함하여 반복문을 돌기에 until을 사용해 주었습니다. 그리고 step은 code 만큼 띄워
내가 필요한 문자열만 answer 안으로 담아주어 풀었습니다.
class Solution {
fun solution(cipher: String, code: Int) : String {
var answer : String = ""
for (x in code - 1 until cipher.length step code){
answer+=cipher[x]
}
return answer
}
}
//모범 답
class Solution {
fun solution(cipher: String, code: Int) = cipher.indices.filter { index -> index % code == code - 1 }.map { cipher[it] }.joinToString("")
}
코틀린은 따로 대문자, 소문자를 스위칭해주는 함수가 없어서 isLowerCase를 사용해서
소문자는 uppercase()로 대문자는 반대로 해주는 코드를 만들고
만약 숫자도 있을 수 있으니 둘다 아니면 그 자신을 출력하게 만들어 합쳐주어 풀었습니다.
class Solution {
fun solution(my_string: String) : String {
val answer = my_string.map {
when {
it.isLowerCase() -> it.uppercase()
it.isUpperCase() -> it.lowercase()
else -> it
}
}.joinToString("")
return answer
}
}
이 문제는 배열안 가장 큰 수와 그 인덱스를 출력하는 코드를 작성해야 합니다.
그래서 intArray 안에 먼저max()를 사용해서 큰 수를 구해주고.find를 사용해서 그 값이
큰 값과 같으면 그 인덱스를 가져와 출력하도록 만들었습니다.
class Solution {
fun solution(array: IntArray) = intArrayOf(array.max(), array.indices.find { i -> array[i] == array.max() }!!)
}
//모범 답
class Solution {
fun solution(array: IntArray) = array.maxOf { it }.let { max ->
intArrayOf(max, array.indexOfFirst { it == max })
}
}
이 문제는 numlist안에 n의 배수가 있다면 그것을 리스트로 담아 출력하는 문제입니다.
그래서 n을 나눴을 때 0인 것에 대해 answer안으로 담아 풀어주었습니다.
class Solution {
fun solution(n: Int, numlist: IntArray): IntArray {
var answer: IntArray = intArrayOf()
for (x in numlist.indices){
if(numlist[x] % n == 0){
answer+=numlist[x]
}
}
return answer
}
}
이 문제는 n 번째 원소까지 그 값들을 출력하는 문제입니다.
그래서 어렵지 않게 반복문을 통해 n 번째 까지 특정해주고
그 배열안의 값들을 answer에 더해 풀어주었습니다.
class Solution {
fun solution(num_list: IntArray, n: Int): IntArray {
var answer: IntArray = intArrayOf()
for (x in 0 until n){
answer+=num_list[x]
}
return answer
}
}
아직까지는 생각하는 데로 코드가 나와 좋았는데 점점 더 어려워지고 있습니다.
코드에 대한 이해가 더 필요해 보입니다..