IT/Programmers

[Programmers/코딩테스트 연습] 과일장수 Python

안선생 Dr.Ahn 2022. 11. 21. 09:16
728x90
반응형

Lv.1 과일장수 (python)

#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<>());
    
    for(int l = 1; (l*m)-1 < score.size(); l++) {
        answer += (m * score[l*m -1]);
    }
    return answer;
}

 

 

C/C++로 먼저 했었는데, 10, 11, 12, 13 테스트가 시간 초과로 실패했다.

대체 뭐가 문제인지 모르겠고 백엔드에서는 c/c++ 안쓰는 것 같아서 그냥 앞으로 python이랑 java에 전념하기로...

#include <stdio.h>
#include <stdlib.h>


int func_compare_r(const void *_a, const void *_b) { 
    return (*(int *)_b - *(int *)_a); 
} 
int solution() {

int answer = 0;

/* 내림차 정렬

  int tmp = 0;
  for(int i = 0; i < score_len; i++){
    for(int j = 0; j < score_len; j++) {
      if(score[i] > score[j]) {
        tmp = score[j];
        score[j] = score[i];
        score[i] = tmp;
      }
    }
  }
  */
  
  
/* quick sort 함수 사용한 내림차정렬, func_compare_r에서 error
  qsort(&score, score_len, sizeof(int), func_compare_r); 
     for(int k = 0; k < score_len; k++) { 
      printf("%d",score[k]);
    } 
*/

  /* while문으로 계산
  int l = 1;
  while((l*m)-1 < score_len) {
    answer += m*score[(l*m)-1];
    l++;
  }
  */


  //for문으로 계산 (시간초과가 while문 때문인가 싶어서 바꿔보았음)
  for(int l = 1; (l*m)-1 < score_len; l++) {
    answer += (m * score[l*m -1]);
  }
}

안녕 5년간 함께했던 c++.....!

728x90
반응형