티스토리 뷰

 

 

문제 설명

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

 

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

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

 

댓글