강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

tlswodnr427님의 프로필 이미지
tlswodnr427

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

41. 연속된 자연수의 합(단순 수리)

41번 연속된 자연수의 합 ) 질문드립니다.

작성

·

187

0

우선 소스코드는 위와 같은데요 

제가 생각한 방법은 

n이라는 수가 주어졌을때 

1부터 n/2까지 반복문을 돌리면서 ,

1+ 2+3+ ....     

   2+ 3+ 4+ ... 

        3+ 4+ 5+ ..... 

4+ 5+ ......

                 5+ 6+... .

                     6+7+....

7+8....  

이중 합이 15가 나오는경우만 count하는 방법을 생각해봤는데 

이 방법으로도 가능할것 같은데 계속 고민해가며 고쳐봐도 틀리게 나와 질문드립니다. 

#include <stdio.h>

int temp[100],cnt=0;

void Clear(int temp[],int p){
	for(int i=0; i<=p; i++){
		temp[i]=0;
	}
}

int main(void){
	int n,sum=0,p=1,i,j;
	scanf("%d",&n);
	
	for(i=1; i<n/2; i++){  
		int k=i;
		while(1){
			if(sum==n){
				cnt++;
				for(j=1; j<p; j++){
					if(j==p-1){
						printf("%d = %d\n",temp[j],n);
					}
					else{
						printf("%d + ",temp[j]);
					}
				}
				Clear(temp,p);
				p=1;
				sum=0;
			}
			else if(sum>n){
				Clear(temp,p);
				p=1;
				sum=0;
				break;
			}
			sum+=k;
			temp[p++]=k++;
		}
	}
	
	printf("%d",cnt);
}

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

잘못된 코드가 아닙니다. 채점기는 출력형식이 정확하게 일치해야 100점을 줍니다. 문제에서 출력하는 출력순서와 동일하게 연속된 자연수의 개수가 작은 것부터 큰것 순으로 출력하세요. 그럼 100점이 나오는 코드입니다.

tlswodnr427님의 프로필 이미지
tlswodnr427

작성한 질문수

질문하기