6차 문제 2
문제 설명
한 줄로 서 있는 사람들에게 종이를 다음과 같은 방법으로 나눠주려 합니다.
* 종이 K 장을 맨 앞사람에게 줍니다.
* 맨 앞사람은 자신이 필요한 만큼 종이를 챙긴 후, 남은 종이를 뒷사람한테 전달합니다.
* 뒷사람 또한 자신이 필요한만큼 종이를 챙긴 후, 남은 종이를 뒷사람에게 전달합니다.
* 전달할 종이가 없거나, 모든 사람이 필요한 만큼 종이를 가질 때까지 계속해서 뒷사람에게 남은 종이를 전달합니다.
한 줄로 서 있는 사람들이 각자 필요로 하는 종이 수가 순서대로 들어있는 배열 papers, papers의 길이 papers_len, 처음에 맨 앞사람에게 전달한 종이 수 K가 매개변수로 주어질 때, 필요한 만큼의 종이를 받은 사람은 모두 몇 명인지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
papers | papers_len | K | return |
[2, 4, 3, 2, 1] | 5 | 10 | 3 |
[2, 4, 3, 2, 1] | 5 | 14 | 5 |
수정해야 할 코드
int solution(int papers[], int papers_len, int K) {
int length = papers_len;
for (int i = 0; i < papers_len; i++) {
K -= papers[i];
if (K == 0)
return i;
}
return length;
}
수정
if (K == 0) → if (K < 0) |
K가 0 미만일 경우 종이가 부족한 것이므로 조건을 변경한다.
코드 해석 및 전체 코드
1)전달할 종이가 없거나, 2)모든 사람이 필요한 만큼 종이를 가질 때까지 계속해서 뒷사람에게 남은 종이를 전달한다.
length는 2)에 해당할 경우 반환할 변수로, 사람 수가 들어있는 papers_len을 초깃값으로 준다.
for문에서 paraers_len만큼 반복하여 총 종이 수인 K에 papers[i]만큼 뺀다.
이때, if문은 1)에 해당할 경우 반환할 조건문으로,
if문 전에 K에서 papers[i]만큼 뺏을 때 K가 0 보다 작을 경우 종이를 받은 사람 수인 i를 반환해준다.
i | K -= papers[i] | if (K < 0) |
0 | K = 10 - 2 K = 8 |
X |
1 | K = 8 - 4 K = 4 |
X |
2 | K = 4 - 3 K = 1 |
X |
3 | K = 1 - 2 K = -1 |
O |
4 |
i가 3일 때, K - 2를 할 경우 -1이 된다.
if문 조건인 K가 0보다 작을 경우를 만족하여 i를 반환하고 함수를 종료한다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int papers[], int papers_len, int K) {
int length = papers_len;
for (int i = 0; i < papers_len; i++) {
K -= papers[i];
if (K < 0)
return i;
}
return length;
}
int main() {
int papers1[] = { 2, 4, 3, 2, 1 };
int papers_len1 = 5;
int K1 = 10;
int ret1 = solution(papers1, papers_len1, K1);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret1);
int papers2[] = { 2, 4, 3, 2, 1 };
int papers_len2 = 5;
int K2 = 14;
int ret2 = solution(papers2, papers_len2, K2);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret2);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.54] 6차 문제 4 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.29 |
---|---|
[No.53] 6차 문제 3 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.29 |
[No.51] 저는 따뜻한 날이 좋아요 / cos pro 2급 c언어 기출 문제 6차 문제 1 (0) | 2021.05.28 |
[No.50] 가장 오래 일한 사람을 구해주세요 / cos pro 2급 c언어 기출 문제 5차 문제 10 (0) | 2021.05.27 |
[No.49] 시험 등수 구하기 / cos pro 2급 c언어 기출 문제 5차 문제 9 (0) | 2021.05.27 |
댓글