반응형
6차 문제 7
문제 설명
예산 내에서 의자와 책상을 하나씩 사려고 합니다. 이때, 의자와 책상 가격의 합이 가장 크게 사려고 합니다.
예를 들어, 돈을 7원을 가지고 있고 의자의 가격이 [2, 5], 책상의 가격이 [4, 3, 5]일 때, 첫 번째 의자와 세 번째 책상을 구매하면 가격의 합이 7원이고, 이때 의자와 책상 가격의 합이 가장 큽니다.
예산 money, 의자의 가격이 담긴 배열 chairs, chairs의 길이 chairs_len, 책상의 가격이 담긴 배열 desks, desks의 길이 desks_len이 매개변수로 주어집니다. 이때 예산으로 감당할 수 있는 의자와 책상 가격 합의 최댓값을 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
예시
money | chairs | chairs_len | desks | desks_len | return |
7 | [2, 5] | 2 | [4, 3, 5] | 3 | 7 |
7 | [3] | 1 | [5] | 1 | 0 |
코드 해석 및 전체 코드
answer는 가지고 있는 금액으로 의자와 책상을 하나씩 살 수 없는 경우에는 0을 return 하기 때문에
초깃값으로 0을 가진다.
이중 for문에서는 의자와 책상을 하나씩 살때, 예산으로 감당할 수 있는 의자와 책상 가격 합의 최댓값을 구한다.
price는 chairs[i] + desks[j]를 더하고,
if문에서 price가 answer가 price보다 크고, money보다 작거나 같으면 price는 최댓값이자 반환 값이 된다.
#include <stdio.h>
#include <stdlib.h>
int solution(int money, int chairs[], int chairs_len, int desks[], int desks_len) {
int answer = 0;
for (int i = 0; i < chairs_len; i++) {
for (int j = 0; j < desks_len; j++) {
int price = chairs[i] + desks[j];
if (answer < price && money >= price)
answer = price;
}
}
return answer;
}
int main() {
int money1 = 7;
int chairs1[] = { 2, 5 };
int chairs_len1 = 2;
int desks1[] = { 4, 3, 5 };
int desks_len1 = 3;
int ret1 = solution(money1, chairs1, chairs_len1, desks1, desks_len1);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret1);
int money2 = 7;
int chairs2[] = { 3 };
int chairs_len2 = 1;
int desks2[] = { 5 };
int desks_len2 = 1;
int ret2 = solution(money2, chairs2, chairs_len2, desks2, desks_len2);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret2);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
반응형
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.59] 6차 문제 9 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
---|---|
[No.58] 6차 문제 8 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
[No.56] 6차 문제 6 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
[No.55] 6차 문제 5 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
[No.54] 6차 문제 4 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.29 |
댓글