본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.57] 6차 문제 7 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 30.
반응형

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);
}

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어

 

반응형

댓글