5차 문제 7
문제 설명
XX 마트에선 구매할 물건이 3개 이하이면 소량 계산대에서, 그렇지 않으면 일반 계산대에서 계산해야 합니다. 두 계산대 모두 물건 한 개를 계산하는 데 1분이 걸립니다.
손님들이 구매할 물건 수가 담긴 배열 stuffs, 배열 stuffs의 길이 stuffs_len이 매개변수로 주어질 때, 모든 물건을 계산하는 데 필요한 시간을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
stuffs | stuffs_len | return |
{5, 3, 4, 2, 3, 2} | 6 | 10 |
수정해야 할 코드
int solution(int stuffs[], int stuffs_len) {
int answer = 0;
int small_counter = 0;
int general_counter = 0;
for(int i = 0; i < stuffs_len; i++) {
if(stuffs[i] > 3)
general_counter += stuffs[i];
else
small_counter += stuffs[i];
}
if(small_counter < general_counter)
answer = small_counter;
else
answer = general_counter;
return answer;
}
수정
if(small_counter < general_counter) → if(small_counter > general_counter) |
코드 수정 전에는 small_counter(소량)가 general_counter(일반) 보다 작으면 answer는 small_counter라고 되어있지만
if문의 조건이 맞으면 small_counter가, 아니면 general_counter가 answer에 저장된다.
한줄만 변경해야 하므로 if문 조건이 맞을 때 small_counter가 answer에 저장되기 위해선 small_counter가 general_counter보다 커야지만 프로그램이 정상적으로 작동한다.
코드 해석 및 전체 코드
answer ) 모든 물건을 계산하는데 걸리는 시간을 반환할 변수
small_counter ) 소량 계산대에서 계산되는 시간을 저장할 변수
general_counter ) 일반 계산대에서 계산되는 시간을 저장할 변수
for ) 0 ~ sfuffs_len - 1까지 반복
if in for ) stuffs[i]의 값이 3보다 크면 general_counter를 stuffs[i]만큼 증가, 3 이하이면 small_counter를 stuffs[i]만큼 증가한다.
소량 계산대에는 물건을 3개 이하일 때만 사용 가능하고, 물건 1개당 계산 시간이 1분 걸린다.
i | stuffs[i] | if (stuffs[i] > 3) | general_counter | small_counter |
0 | 5 | O | +5 | |
1 | 3 | X | +3 | |
2 | 4 | O | +4 | |
3 | 2 | X | +2 | |
4 | 3 | X | +3 | |
5 | 2 | X | +2 |
general_counter은 5 + 4로 9이고, small_counter은 3 + 2 + 3+ 2로 10이다.
if ) small_counter가 general_counter보다 클 경우 answer에 small_counter를 저장, 작을 경우 answer에 general_counter를 저장한다.
answer는 모든 물건을 계산하는 시간을 반환하는 변수로 계산 시간이 더 큰 값을 반환한다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int stuffs[], int stuffs_len) {
int answer = 0;
int small_counter = 0;
int general_counter = 0;
for (int i = 0; i < stuffs_len; i++) {
if (stuffs[i] > 3)
general_counter += stuffs[i];
else
small_counter += stuffs[i];
}
if (small_counter > general_counter)
answer = small_counter;
else
answer = general_counter;
return answer;
}
int main() {
int stuffs[6] = { 5, 3, 4, 2, 3, 2 };
int stuffs_len = 6;
int ret = solution(stuffs, stuffs_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[5차] 문제7) 계산대 두개에서 계산시간을 구해주세요!
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.49] 시험 등수 구하기 / cos pro 2급 c언어 기출 문제 5차 문제 9 (0) | 2021.05.27 |
---|---|
[No.48] 상수도 요금 구하기. (물을 아껴 씁시다.) / cos pro 2급 c언어 기출 문제 5차 문제 8 (0) | 2021.05.26 |
[No.46] 이제 수학 시험에 모든 걸 건다. 평균 70을 위하여! / cos pro 2급 c언어 기출 문제 (0) | 2021.05.25 |
[No.45] n일장이 함께 열리는 날은 언제인가요. / cos pro 2급 c언어 기출 문제 (0) | 2021.05.25 |
[No.44] 선수가 획득한 점수를 구해주세요. (feat.전투민족) / cos pro 2급 c언어 기출문제 (0) | 2021.05.24 |
댓글