
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
이 문제는 인덱스를 돌며 -가 처음 생성하는 곳에서 그 인덱스를 answer안으로 저장하고 그것을 출력하는
문제다 틀리면 answer는 -1을 만들도록 조건을 만들고 출력해주었다.
그런데.indexOfFirst를 사용하면 쉽다는 것을 알았다.
class Solution {
fun solution(num_list: IntArray): Int {
var answer : Int = 0
for (x in num_list.indices){
if (num_list[x] < 0){
answer = x
break
} else
answer = -1
}
return answer
}
}
class Solution {
fun solution(num_list: IntArray): Int {
return num_list.indexOfFirst { it < 0 }
}
}
이 문제는 start_num에서 end_num까지 down으로 값을 구해야한다.
처음에는 step -1을 생각했는데 생각해보니downTo라는 for 문법이 있기에 그것을 사용하였다.
class Solution {
fun solution(start_num: Int, end_num: Int): IntArray {
var answer: IntArray = intArrayOf()
for (x in start_num downTo end_num){
answer+=x
}
return answer
}
}
class Solution {
fun solution(start: Int, end: Int): IntArray = (start downTo end).toList().toIntArray()
}
이것은 위 문제의 심화로 k 만큼 띄어서 출력해야한다. 그래서 모범 답을 참조하여
k부터 n까지 k스탭한 것을 List로 담고 IntArray로 변환해주어 풀었다.
fun solution(n: Int, k: Int): IntArray = (k..n step k).toList().toIntArray()
접두사 인지 확인하기 위해서는 문자열 처음부터 prefix 만큼 같아야한다.
그렇기에startsWith()를 사용하여 풀어 주었다.
- startWith() : 특정 문자()로 시작하는지 체크하는 함수
- endsWith() : 특정 문자()로 끝나는지 체크하는 함수
fun solution(my_string: String, is_prefix: String): Int {
return if(my_string.startsWith(is_prefix)) 1 else 0
}
이 문제는 문자열의 앞의 n글자 만큼을 출력하는 문제이다.
그렇기에 인덱스 0부터 n-1 만큼 담기 위해until을 사용해서 풀어주었다.
그런데.slice를 사용해서 풀면 좀 더 쉽게 접근할 수 있다는 것을 알 수 있었다.
class Solution {
fun solution(my_string: String, n: Int): String {
var answer : String = ""
for (x in 0 until n){
answer += my_string[x]
}
return answer
}
}
class Solution {
fun solution(my_string: String, n: Int): String = my_string.slice(0 until n)
}
점점 함수를 활용하는 능력이 올라가는 것 같아서 재미있는 문제풀이였다.
앞으로도 열심히 해보자!