문제 풀기/C#

56. 과일 장수

kagan-draca 2025. 2. 6. 15:41

 

기본 틀 :

 

using System;

public class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        return answer;
    }
}

 

문제를 보고 score를 내림차순 할 필요성을 느꼈다.

 

그래서,

 

Array.Sort(score);

score = score.Reverse().ToArray();

 

로 내림차순 정렬을 만들어줬다. 

 

반복 횟수는 score의 개수를 원하는 묶음 단위인 m으로 나눈 몫이라

 

int div = score.Length / m;

 

으로 반복 횟수로 정해줬다.

 

score 배열에서 일부 배열을 잘라와야 하기 때문에

 

Skip()과 Take() 함수를 사용했는데

 

Skip()의 input 값으로는 (i * m)으로 index가

 

0부터 시작해 m 만큼 이동하게 만들어줬다.

 

그렇게 자른 배열에서 가장 작은 값 X 묶음 개수의 전체 합을 구해주면 됐다.

 

using System;
using System.Linq;

public class Solution 
{
    public int solution(int k, int m, int[] score) 
    {
        int result = 0;
        
        Array.Sort(score);
        score = score.Reverse().ToArray();
        
        int div = score.Length / m;
        
        for(int i = 0; i < div; i++)
            result += score.Skip((i * m)).Take(m).Min() * m;

        return result;
    }
}

 

수행 결과를 보면 좋은 코드는 아닌 것 같다...

 

하지만, 당장에 다른 방법이 떠오르지 않고 대체해 볼 메서드도 생각나지 않는다...

'문제 풀기 > C#' 카테고리의 다른 글

58. 소수 만들기  (0) 2025.02.07
57. 모의고사  (0) 2025.02.07
55. 카드 뭉치  (0) 2025.02.06
54. 2016 (DateTime Class)  (0) 2025.02.06
53. 명예의 전당 (1)  (0) 2025.02.05