TIL 20240621 코딩 테스트(12)

2024. 6. 21. 00:07코딩테스트

사이드 프로젝트 들어가서 바빠졌지만,,,

그래도 코딩 테스트 꾸준히 풀고 있으므로,,

정리도 꾸준히,,, ㅎㅎ


// 이어 붙인 수
class Solution {
    fun solution(num_list: IntArray): Int {
        val a = num_list.filter { it % 2 == 0 }.joinToString("").toInt()
        val b = num_list.filter { it % 2 == 1 }.joinToString("").toInt()
        return a + b
    }
}

 

 

 

짝수값만 필터해서 a를 넣어주고, 홀수 값만 필터해서 b에 넣어서 더해주었다.

아 참고로 이어 붙은 수이므로, joinToString를 사용해주었다....

 

 


// 홀수 vs 짝수
class Solution {
    fun solution(num_list: IntArray): Int {
        var a = num_list.filterIndexed { index, _ -> index % 2 == 0}.sum()
        var b = num_list.filterIndexed { index, _ -> index % 2 == 1}.sum()

        return if( a >= b ) a else b
    }
}

 

출처 https://blog.yena.io/studynote/2020/01/22/Kotlin-Collection-Filter.html

 

홀수, 짝수 각 인덱스를 선언과 할당해주고 각 합계의 크기를 비교해서 값을 추출해주는 문제였다..

그래서 filterIndexed는 리스트의 각 요소와 해당 요소의 인덱스를 사용하여 조건을 만족하는 요소들을 필터링하는 함수로, 이를 이용해서 문제를 풀어주었다....

여기서 _는 요소의 값을 무시한다는 의미고, sum()를 써서 합계를 구할 수 있다...

마지막으로 if 절을 이용해서 값을 비교하고 a가 크거나 같으면 a , 아니라면 b를 리턴하게 해주었다.

 

 


// 접미사인지 확인하기

class Solution {
    fun solution(my_string: String, is_suffix: String): Int =
        if(my_string.endsWith(is_suffix)) 1 else 0
}

 

앞서 접두사를 구한 것과 마찬가지로 문법을 사용해주었다.... 

if절을 이용해서 endsWith를 사용해서 이와 같으면 1을 아니라면 0라는 값이 나오도록 해주었다.

 

 


// 머쓱이보다 키 큰 사람

class Solution {
    fun solution(array: IntArray, height: Int) = array.filter { it > height}.size
}

 

filter로 간단하게 풀어주었다... 머쓱이 보다 키가 크는 사람만 필터해서 그 size를 구해준당

 

 


// 개미군단

class Solution {
    fun solution(hp: Int): Int = hp / 5 + (hp % 5 / 3) + (hp % 5 % 3)
}

 

 

 

말 그대로,

hp / 5 는 hp를 5로 나누어 떨어지는 최대 횟수로 하고  

hp % 5 / 3는 5로 나눈 후 남은 나머지를 3으로 나누어 떨어지는 최대 횟수고

hp % 5 % 3는 주어진 hp를 5와 3과 1로 나누어 최소 몇 번의 연산이 필요한지 계산하는 것이다....

참고로,,, 1을 안써도 써도 똑같으니 안썼다... ㅎㅎ

 

흑,,, 사실 이거 너무 어려워서,,, 몇번이고 봤는지 모르겠다,,,,

흑 이거 정리하면 다시 한번 풀러가야지 ㅠㅠ

 


// 편지

class Solution {
    fun solution(message: String): Int {
        var answer: Int = 0
        for (i in message){
            answer++
        }
        return 2 * answer
    }
}

 

 

 

for문을 이용해서 message의 길이를 구하는 거였다.. 그래서 글자가 있을 만큼 answer ++ 해주었고!

그 길이가 2cm 이므로 return 할 때는 2를 곱해준 다음 리턴을 해주었다.

 

다른 분이 푼걸 확인했었는데 length로 하면 더 간편케 구할 수 있었다...

 

 

'코딩테스트' 카테고리의 다른 글

TIL 20240629 코딩 테스트(14)  (0) 2024.06.29
TIL 20240624 코딩 테스트(13)  (1) 2024.06.24
TIL 20240619 코딩 테스트(11)  (0) 2024.06.19
TIL 20240613 코딩 테스트(10)  (0) 2024.06.13
TIL 20240609 코딩 테스트(9)  (0) 2024.06.09