(코딩테스트) 과일 장수

2024. 4. 11. 17:36개발자 과정/Kotlin

https://n-pureun.tistory.com/54

 

이전에 풀었던 문제다. 

다만 지난 번 풀이가 좀 날코딩 같기도 했고, 

다시 문제를 읽어보니 정렬로 푸는게 쉬울거 같아 로직을 수정했다.

 

풀이의 선택과정

1. 전달받은 배열정렬한다.

2. 정렬된 배열을 가지고, 전달받은 크기만큼 구간을 나눈다.

3. 그 중 가장 작은 값을 구하고, 문제에 맞게 곱한다.

4. 나머지 부분은 버린다.

 

처음엔 Step 순회 하며 SliceArray후 가장 작은 값을 구하려 했는데, 

이게 나머지 연산만으로 가상의 구간을 나눌 수 있을거 같았다.

 

정답풀이

class Solution {
    fun solution(k: Int, m: Int, score: IntArray): Int {
        var answer: Int = 0
        score.sortDescending()
        for(i in score.indices)
        {
            if((i+1)%m==0) answer+=score[i]*m
        }
        return answer
    }
}

 

핵심로직

score.sortDescending()

= 정렬하지 않으면, 지난번 풀이와 같이 복잡한 로직을 거쳐야 한다.

 

여담

어째서..?

= 과거 풀이들을 보면, 회사를 다니던 때가 코딩을 제일 못한 때인거 같다.

   입사 이전에도 자료구조도 조금 알고, 직접 구현도 하고, 난이도 있는 문제도 척척풀었던거 같은데,

   밥먹고 코딩만 하던 재직당시의 퍼포먼스가 더 떨어져 보이는건 어째서일까...?

   코테에 쓰이는 것들을 쓸일이 별로 없었어서 그런가?