본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.52] 종이 나누어 주기 / cos pro 2급 c언어 기출 문제 6차 문제 2

by M개발자 2021. 5. 28.
반응형

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);
}

cos pro 2급 기출문제

github

 

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

 

 

반응형

댓글