티스토리 뷰
□문제 설명
A 백화점에서는 고객의 구매금액에 따라 다음과 같이 상품권을 지급합니다.
구매금액 | 상품권 |
100만 원 이상 구매 | 5만 원 상품권 |
60만 원 이상 구매 | 3만 원 상품권 |
40만 원 이상 구매 | 2만 원 상품권 |
20만 원 이상 구매 | 1만 원 상품권 |
이때, 상품권은 지급 가능한 가장 큰 금액으로 한 장만 지급합니다.
예를 들어 고객이 65만 원을 구매했다면, 3만 원 상품권 한 장만 지급합니다.
고객들의 구매 금액이 들어있는 배열 purchase와 purchase의 길이 purchase_len이 주어질 때, 고객들에게 지급해야 하는 상품권 총액을 return하도록 solution함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다.
주어진 코드에서 한줄 만 변경해서 모든 입력에 대해 올바르게 작동하도록 수정해주세요.
□매개변수 설명
고객들의 구매 금액이 들어있는 배열 purchase와 purchase의 길이 purchase_len이 solution함수의 매개변수로 주어집니다.
- purchase_len은 1 이상 100 이하의 자연수입니다.
- purchase의 원소는 10 이상 1,500,000 이하의 자연수이며, 10원 단위로 주어집니다.
예시
purchase | purchase_len | return |
[150000, 210000, 399990, 990000, 1000000] | 5 | 100000 |
□주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int purchase[], int purchase_len) {
int total = 0;
for(int i = 0; i < purchase_len; ++i){
if(purchase[i] >= 1000000)
total += 50000;
else if(purchase[i] >= 600000)
total += 30000;
else if(purchase[i] >= 400000)
total += 20000;
else
total += 10000;
}
return total;
}
int main() {
int purchase[5] = { 150000, 210000, 399990, 990000, 1000000 };
int purchase_len = 5;
int ret = solution(purchase, purchase_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
□결과(오류)
purchase | purchase_len | return |
[150000, 210000, 399990, 990000, 1000000] | 5 | 110000 |
□완성 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int purchase[], int purchase_len) {
int total = 0;
for (int i = 0; i < purchase_len; ++i) {
if (purchase[i] >= 1000000)
total += 50000;
else if (purchase[i] >= 600000)
total += 30000;
else if (purchase[i] >= 400000)
total += 20000;
else if (purchase[i] >= 200000)
total += 10000;
}
return total;
}
int main() {
int purchase[5] = { 150000, 210000, 399990, 990000, 1000000 };
int purchase_len = 5;
int ret = solution(purchase, purchase_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
□코드 분석
단계 | 과정 |
main | 고객들의 구매 금액이 들어있는 배열 purchase와 그 길이를 선언한다. solution함수를 호출한다. |
solution | 고객들에게 지급해야 하는 상품권 총액을 저장할 변수 answer를 선언한다. |
solution - for | 고객의 수만큼 반복한다. 각 고객이 계산한 금액을 if else if문을 사용하여 조건에 따라 10만원 이상일 경우 5만원 상품권, 6만원 이상일 경우 3만원 상품권, 4만원 이상일 경우 2만원 상품권, 2만원 이상일 경우 1만원 상품권 을 total에 누적한다. 이때 주어진 코드대로 실행하면, else조건에 따라 구매금액이 2만원이 넘지 않을 경우에도 1만원 상품권이 지급된다. 따라서 else를 else if(purchase[i] >= 200000)문으로 수정하면 올바른 결과값을 얻을 수 있다. |
solution | total값을 return한다. |
main | 결과값(total) ret를 출력한 후 프로그램을 종료한다. |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[Cospro C 2급] 1차 1번_k등을 한 학생 찾기 (0) | 2022.01.25 |
---|---|
[COS PRO 2급] 6차 10번_사과 박스 무게의 불량 검사 (C/C++) (0) | 2021.05.29 |
[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차 7번_의자와 책상을 사고싶어요 (C/C++) (0) | 2021.05.29 |
댓글
공지사항
최근에 올라온 글
TAG
- Cos Pro
- 1급
- YBM기출
- 구름 기출문제
- COSPRO 2급
- 구름에듀 기출문제
- c언어
- lv2
- 코스프로
- CosPro
- programmers
- 자바
- cospro기출
- 구름에듀
- groomedu
- 연습문제
- C++
- 코딩테스트
- cospro기출문제
- 기출문제
- 배열
- c언어 기출문제
- C
- lv1
- groom
- Java
- 배열활용문제
- YBM
- 알고리즘
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함