티스토리 뷰
□문제 설명
예산 내에서 의자와 책상을 하나씩 사려고 합니다. 이때, 의자와 책상 가격의 함이 가장 크게 사려고 합니다.
예를 들어, 돈을 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를 출력한 후 프로그램을 종료한다. |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 6차 9번_난 양말색이 달라도 잘 신는 착한 어린이 (C/C++) (0) | 2021.05.29 |
---|---|
[COS PRO 2급] 6차 8번_주어진 수와 뒤집은 수의 차 구하기 (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 6번_비밀번호는 만드는것 보다 검사하는게 힘들죠 (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 5번_음료수 마시기 (빈병으로 음료수를 사세요!) (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 4번_카드뽑기 게임! (도박은 안되요!) (C/C++) (0) | 2021.05.29 |
댓글
공지사항
최근에 올라온 글
TAG
- 구름에듀
- c언어
- 알고리즘
- groom
- cospro기출
- 구름에듀 기출문제
- CosPro
- lv2
- YBM기출
- 연습문제
- 기출문제
- 자바
- groomedu
- lv1
- 배열
- C
- Java
- YBM
- c언어 기출문제
- cospro기출문제
- programmers
- 1급
- 구름 기출문제
- 코스프로
- COSPRO 2급
- 코딩테스트
- 배열활용문제
- Cos Pro
- 프로그래머스
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함