본문 바로가기
프로그래머스 Algorithm

[프로그래머스] 과일장수 풀이 Kotlin

by Echung 2024. 1. 16.

thumbnail

안녕하세요. 이번에는 프로그래머스 과일 장수 문제를 풀어보려고 합니다. 

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Solution


class Solution {
    fun solution(k: Int, m: Int, score: IntArray): Int {
        var answer: Int = 0
        
        val boxNum = score.size / m
        val sortedScore = score.sortedDescending()
    
        for(i in 0 until boxNum) {
            answer += sortedScore[(m * i) + m - 1] * m            
        }
        
        return answer
    }
}

이번 문제는 사과를 판매하여 최고 이익을 만드는 문제입니다. 여기서 최대 이익 공식이 (최저 사과 점수) * (한 상자에 담긴 사과 개수) * (상자의 개수)입니다. 그래서 저는 sortedDescending을 사용해서 일단 정렬을 해줬습니다. 그리고 사과의 한 박스에 담기는 값이 최대한 높은 값들을 넣도록 하여 문제를 접근해 보았습니다.

 

1. 다른 사람 코드

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

저와 비슷한 방식으로 문제에 접근하였지만, step을 사용하면서 m칸씩 가도록 코드를 작성한 것을 확인할 수 있었습니다. for문과 step을 잘 활용한 코드 같습니다.


Performance

1. 내가 작성한 코드 2. 다른 사람 코드
반응형