[코테]/[GroomEdu]
[COS PRO 2급] 6차 7번_의자와 책상을 사고싶어요 (C/C++)
Sky_
2021. 5. 29. 21:55
□문제 설명
예산 내에서 의자와 책상을 하나씩 사려고 합니다. 이때, 의자와 책상 가격의 함이 가장 크게 사려고 합니다.
예를 들어, 돈을 7월을 가지고 있고 의자의 가격이 [2,5], 책상의 가격이 [4,3,5]일 때, 첫번째 의자와 세번째 책상을 구매하면 가격의 합이 7원이고, 이때 의자와 책상 가격의 합이 가장 큽니다.
예산 money, 의자의 가격이 담긴 배열 chairs, chairs의 길이 chairs_len, 책상의 가격이 담긴 배열 desks, desks의 길이 desks_len이 매개변수로 주어집니다. 이때 예산으로 감당할 수 있는 의자와 책상 가격의 합의 최댓값을 return하도록 solution함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
□매개변수 설명
예산 money, 의자의 가격이 담긴 배열 chairs, chairs의 길이 chairs_len, 책상의 가격이 담긴 배열 desks, desks의 길이 desks_len이 매개변수로 주어집니다.
- 예산 money는 1 이상 1,000 이하인 자연수입니다.
- 의자와 책상의 가격은 1 이상 1,000 이하인 자연수입니다.
- chairs_len과 desks_len은 1 이상 100 이하입니다.
□예시
money | chairs | chairs_len | desks | desks_len | return | |
예제 #1 | 7 | [2,5] | 2 | [4,3,5] | 3 | 7 |
예제 #2 | 7 | [3] | 1 | [5] | 1 | 0 |
□주어진 코드
#include <stdio.h>
#include <stdbool.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 = ; //빈칸
if(answer < 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);
}
□완성 코드
#include <stdio.h>
#include <stdbool.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 && price<=money)
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);
}
□코드 분석
단계 | 과정 |
main | 예산 money 의자의 가격이 담긴 배열 chairs, chairs의 길이 chairs_len 책상의 가격이 담긴 배열 desks, desks의 길이 desks_len 의 값을 각각 할당한다. solution함수를 호출한다. |
solution | 의자와 책상을 하나씩 살 때, 예산으로 감당할 수 있는 의자와 책상 가격의 합의 최댓값을 넣을 변수 answer를 선언한다. |
solution - for | 이중 for문을 사용하여, 의자와 책상의 모든 조합을 검색한다. for문 안에서 if문을 사용하여 의자+책상의 가격이 지정금액보다 적고, answer보다 클 때마다 answer에 price값을 할당한다. price<=moeny 조건을 사용하여 최대 금액을 구할 수 있다. |
solution | 모든 반복이 종료되고, 의자와 책상 가격의 합의 최댓값 answer를 return한다. |
main | 결과 ret를 출력한 후 프로그램을 종료한다. |
COS PRO 2급 기출문제 - C언어 - 구름EDU
YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.
edu.goorm.io