맛만 볼게요
프로그래머스 - 과일 장수 - c 본문
프로그래머스 - 과일 장수
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int compare(const void* a, const void* b) {
if (*(int*)a > *(int*)b)
return -1;
else if (*(int*)a < *(int*)b)
return 1;
else return 0;
}
int solution(int k, int m, int score[], size_t score_len) {
int answer = 0;
int num = (int)score_len / m;
int **tmp;
// score sorting
qsort(score, score_len, sizeof(int), compare);
// split size m
tmp = malloc(sizeof(num));
for (int i = 0; i < num; i++) {
*(tmp + i) = malloc(m * sizeof(int));
for (int j = 0; j < m && m*i + j < (int)score_len; j++) {
*(*(tmp + i) + j) = score[m * i + j];
}
answer += *(*(tmp + i) + m - 1) * m; // --- 왜 여기선 되는데
}
// for (int i = 0; i < num; i++) {
// answer += *(*(tmp + i) + m - 1) * m; // --- 여기선 안 될까요..?
// }
return answer;
}
첫 답안.
당연히 m 길이 별로 나눠서 저장해 둬야 할 줄 알고 이케 씀.
주석을 보면 분명 같은 문장에 같은 반복 조건임에도 아래에 따로 썼더니
프로그래머스 사이트에서 오류가 생겼음.
저 부분을 지나는 순간 answer가 무조건 0이 돼 버리는 마법...
비주얼 스튜디오에서도 문제 없었고, 리눅스 gcc에서도 문제 없었으나, 오직 프로그래머스에서만..ㅠ
하여튼 올려서 윗 반복문에 끼워넣으니 되더라.
제출하고 다른 답안들을 보니...
어..? tmp 아무 쓸모가 없었네..??
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int compare(const void* a, const void* b) {
if (*(int*)a > *(int*)b)
return -1;
else if (*(int*)a < *(int*)b)
return 1;
else return 0;
}
int solution(int k, int m, int score[], size_t score_len) {
int answer = 0;
int num = (int)score_len / m;
// score sorting
qsort(score, score_len, sizeof(int), compare);
for (int i = 0; i < num; i++) {
answer += score[m * i + m - 1] * m;
}
return answer;
}
쓸데 없이 길게 썼었더라...
'c > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 등대 - c (1) | 2022.11.20 |
---|---|
프로그래머스 - 숫자 카드 나누기 - c (0) | 2022.11.15 |
Comments