본문 바로가기

cospro2급/cospro_6차

2021-05-28 / 2번 문제

종이 나누어 주기

 

문제 설명

한줄로 서 있는 사람들에게 종이를 다음과 같은 방법으로 나눠주려 한다.

  종이 K장을 맨 앞사람에게 준다.

  맨 앞사람은 자신이 필요한만큼 종이를 챙긴 후, 남은 종이를 뒷사람한테 전달한다.

  뒷사람 또한 자신이 필요한만큼 종이를 챙긴 후, 남은 종이를 뒷사람에게 전달한다.

  전달할 종이가 없거나, 모든 사람이 필요한 만큼 종이를 가질 때까지 계속해서 뒷사람에게 남은 종이를 전달한다.

 

한 줄로 서 있는 사람들이 각자 필요로 하는 종이 수가 순서대로 들어있는 배열 papers, papers의 길이 papers_len, 처음에 맨 앞사람에게 전달한 종이 수 K가 매개변수로 주어질 때, 필요한 만큼의 종이를 받은 사람은 모두 몇 명인지 return 하는 solution 함수를 완성한다.

 

매개변수 설명

한 줄로 서 있는 사람들이 각자 필요로 하는 종이 수가 순서대로 들어있는 배열 papers, papers의 길이 papers_len, 처음에 맨 앞사람에게 전달한 종이 수 K가 매개변수로 주어진다.

   papers의 각 원소는 1 이상 20 이하인 자연수이다.

   papers_len은 1 이상 20 이하이다.

   K는 1 이상 400 이하인 자연수이다.

 

return 값 설명

필요한 만큼의 종이를 받은 사람은 모두 몇명인지 return 한다.

 

예시

 

예시 설명

예시1)

맨 앞 사람부터 순서대로 [2장, 4장, 3장, 2장, 1장]의 종이가 필요하다.

  맨 앞사람이 종이 2장을 가지고 남은 8장을 뒷사람에게 넘긴다.

  두 번째 사람이 종이 4장을 가지고 남은 4장을 뒷사람에게 넘긴다.

  세 번째 사람이 종이 3장을 가지고 남은 1장을 뒷사람에게 넘긴다.

  네 번째 사람은 종이 2장이 필요한데 넘어온 종이는 1장이므로 원하는 종이 개수만큼 가질 수 없다.

  나머지 사람들도 종이를 원하는 개수만큼 가질 수 없다.

따라서 필요한 만큼의 종이를 받는 사람은 3명이다.

 

예시 2)

모든 사람이 필요한 만큼의 종이를 받을 수 있다.

 

코드 설명

#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];	//원하는 종이 수만큼 K에서 뺀다.
      if(K <= 0 )	//종이가 다 떨어진 경우
        return i;	//사람의 수 즉, 배열의 마지막 위치를 return
    }
    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);
}

 

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

'cospro2급 > cospro_6차' 카테고리의 다른 글

2021-05-30 / 5번 문제  (0) 2021.05.30
2021-05-30 / 10번 문제  (0) 2021.05.30
2021-05-29 / 8번 문제  (0) 2021.05.30
2021-05-29 / 3번 문제  (0) 2021.05.29
2021-05-28 / 1번 문제  (0) 2021.05.28