[A&I Code Camp] Day18

Hood·2024년 10월 2일

A&I Code Camp

목록 보기
18/38
post-thumbnail

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

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


n개 간격의 원소들

n개 간격의 원소들의 배열을 출력하는 문제이다.
그래서 for문을 통해 step으로 n 간격만큼 answer 배열 안에 넣고 출력해 주었다.
.slice 를 통해 담을 수도 있다.

class Solution {
    fun solution(num_list: IntArray, n: Int): IntArray {
        var answer: IntArray = intArrayOf()
        for (x in 0 until num_list.size step n) {
            answer += num_list[x]
        }
        return answer
    }
}
class Solution {
    fun solution(nums: IntArray, n: Int) = nums.slice(nums.indices step n)
}

문자열 안에 문자열

str1안에 str2가 있는지 확인하는 문제이다. 간단하게 return안에 조건문을 넣어 풀어주었다.

class Solution {
    fun solution(str1: String, str2: String): Int {
        return if (str2 in str1) 1 else 2
    }
}

배열의 유사도

s1 배열 안에 s2 문자열 들이 몇 개가 있는지 확인하는 문제이다.
필자는 2중 반복문을 이용했지만 .countcontains를 통해 쉽게 풀어줄 수 있다.

class Solution {
    fun solution(s1: Array<String>, s2: Array<String>): Int {
        var answer: Int = 0
        for(x in s1.indices){
            for(y in s2.indices){
                if(s1[x] == s2[y]){
                    answer+=1
                }
            }
        }
        return answer
    }
}
class Solution {
    fun solution(s1: Array<String>, s2: Array<String>): Int = s1.count { s2.contains(it) }
}

n보다 커질 때까지 더하기

이 문제는 배열 숫자를 더하다 n보다 커지면 그 값을 반환한다.
그래서 for문으로 answer안에 숫자를 더하다 조건문으로 n보다 커질 때 break를 걸어
그 수를 바로 반환해 주었다.

class Solution {
    fun solution(numbers: IntArray, n: Int): Int {
        var answer: Int = 0
        for(x in numbers.indices){
            answer += numbers[x]
            if(answer > n){
                break
            }
        }
        return answer
    }
}

접미사 배열

이 문제는 좀 고민하다 풀었다.
먼저 반복문으로 문자열의 크기만큼 반복을 돌고 substring을 통해
문자열 인덱스부터 길이까지의 문자열 자른 부분을 answer 배열 안에 담아
그것을 .sorted를 통해 알파벳 순서대로 다시 정렬해주었다.

class Solution {
    fun solution(my_string: String): Array<String> {
        val answer = mutableListOf<String>()
        for (x in my_string.indices){
            answer.add(my_string.substring(x until my_string.length))
        }
        return answer.sorted().toTypedArray()
    }
}

📌결론

이제 간단한 배열 문제는 해결할 수 있는 수준까지는 올라온 것 같다.
코드를 더 다듬고 속도를 줄이기 위해 노력하자.

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

0개의 댓글