문제 설명
지난 연속된 n일 동안의 주식 가격이 순서대로 들어있는 배열이 있습니다. 이때, 다음 규칙에 따라 주식을 사고 팔았을 때의 최대 수익을 구하려 합니다.
- n일 동안 주식을 단 한 번 살 수 있습니다.
- n일 동안 주식을 단 한 번 팔 수 있습니다.
- 주식을 산 날에 바로 팔 수는 없으며, 최소 하루가 지나야 팔 수 있습니다.
- 적어도 한 번은 주식을 사야하며, 한 번은 팔아야 합니다.
주식을 팔 때는 반드시 이전에 주식을 샀어야 하며, 최대 수익은 양수가 아닐 수도 있습니다.
연속된 n 일 동안의 주식 가격이 순서대로 들어있는 배열 prices와 배열의 길이 prices_len이 매개변수로 주어질 때, 주식을 규칙에 맞게 한 번만 사고팔았을 때 얻을 수 있는 최대 수익을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
매개변수 설명
- 연속된 n 일 동안의 주식 가격이 순서대로 들어있는 배열 prices와 배열의 길이 prices_len이 solution 함수의 매개변수로 주어집니다.
- prices의 길이는 2 이상 1,000,000 이하입니다.
- prices의 각 원소는 1 이상 1,000 이하의 자연수입니다.
return 값 설명
주식을 규칙에 맞게 한 번만 사고팔았을 때 얻을 수 있는 최대 수익을 return 해주세요.
prices | prices_len | return |
[1,2,3] | 3 | 2 |
[3,1] | 2 | -2 |
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
typedef struct Student{
char name[20];
int score;
}Student;
int compare(const void *a, const void * b){
Student first = *(Student *)a;
Student second = *(Student *)b;
if(first.score > second.score)
return -1;
else if(first.score < second.score)
return 1;
else
return 0;
}
char* solution(char* names[], int names_len, int scores[], int scores_len, int K) {
int len = names_len;
Student* students = (Student*)malloc(sizeof(Student)*len);
for(int i = 0; i < len; ++i){
strcpy(students[i].name, names[i]);
students[i].score = scores[i];
}
qsort(students, len, sizeof(Student), compare);
return students[K - 1].name;
}
'CODING' 카테고리의 다른 글
COS Pro 1급 C언어 모의고사 - 시험 점수 정렬 (0) | 2023.12.17 |
---|---|
[BAEKJOON] 어른 상어 (0) | 2023.12.08 |
COS Pro 1급 C언어 모의고사 - 피자 (0) | 2023.11.28 |
COS Pro 1급 C언어 모의고사 - Up and down (0) | 2023.11.19 |
[CodeTree] 나무박멸(JAVA) (0) | 2023.04.05 |
댓글