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

gcoco·2023년 5월 12일
0

안녕하세요 ! 머리(hair, not head) 자르고 온 GCOCO입니다!


잡설 한 COOKIE🍪

아휴~~~ 날이 참 덥습니다. 분명 몇 주 전만 하더라도 흠,, 쪼금은 저녁에 추울지도?! 라는 기분이었습니다만,
지금은 시도 때도 없이 더운 기분입니다!

아직 5월초인데 벌써부터 이정도의 더위력이면.....진짜 여름이 왔을때 전 어떻게 해야할까요!!!! 넘 더워!!

이 뜨거운 기분과 함께, 문제 보시죠!


문제링크 :

옛풀이

옛날의 제가 풀었던 코드를 보는것도 생각보다 재밌는 부분인 것 같습니다!
예전의 저와 지금의 제가 어떤식으로 다르게 풀었는지 짚는 부분이 흥미롭달까요.

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
    return a > b;
}

int solution(int k, int m, vector<int> score) {
    int answer = 0;
    sort(score.begin(), score.end(), cmp);
    int num = score.size();
    int i = 1;
    while (num >= m) {
        answer += score[m * i - 1] * m;
        num -= m;
        i++;
    }
    return answer;
}

아... 과연! 놀랍군요! 예전의 저나 지금의 저나 생각하는게 비슷했습니다!


새풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int k, int m, vector<int> score) {
    int answer=0;
    sort(score.begin(),score.end(),greater<int>());
    int size = score.size();
    int box=0;
    while(size-m>=0){
        size-=m;
        box++;
        answer+=m*(score[box*m-1]);
    }
    return answer;
}

풀이가 아주 유사합니다!

step은 다음과 같습니다.

  1. 큰 수를 기준으로 정렬
  2. m만큼씩 잘라가며 최솟값 찾고 가격 계산해주기.

참고로 한 가지 팁이 있다면, sort 함수를 사용할 때 3번째 인자에

greater<int>()

위의 인자를 넣어주게 되면 내림차순으로 정렬해줍니다! 그렇다면 오름차순으로 정렬하려면 어떻게 할까요?

혹시 고민하셨나요?

sort의 default는 오름차순 정렬입니다!


봐주셔서 감사드립니다. 이상으로 포스팅 마치겠습니다!

profile
그코코 입니다.

0개의 댓글