문제 풀기/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;
}
}
수행 결과를 보면 좋은 코드는 아닌 것 같다...
하지만, 당장에 다른 방법이 떠오르지 않고 대체해 볼 메서드도 생각나지 않는다...