되는대로 살자

[C언어 기출문제&풀이] 개미 수열 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 개미 수열

malu 2010. 11. 2. 17:49
프로그램 명: antseries
제한시간: 1 초

개미 수열은 아래와 같이 수열이 만들어 진다.

1
1 1
2 1 
1 2 1 1
1 1 1 2 2 1
....
문제는 임의의 수열이 주어질 때 다음 단계의 수열을 알아내는 것이다.

어떤 규칙으로 확장되는지를 알아내는게 문제의 핵심이다.

입력

40 개 이하의 1 이상 9 이하의 수가 주어진다.

입력의 끝은 0 이다.

출력

다음 단계의 수열을 한 줄에 출력한다.

입출력 예

입력

1 2 1 1 0

출력

1 1 1 2 2 1
출처: 베르나르 베르베르 

풀이 : 규칙은 이렇다. a(n)을 일반항이라고 하고, a(n-1)번째 항의 1의 갯수가a개 2의 갯수가b개... 이면 a(n)항은 a1b2처럼 표시한다.

소스코드 :
#include <stdio.h>
02   
03 int main()
04 {
05     int a[40],i,count=0,temp=0;
06     for(i=0;;i++)
07     {
08         scanf("%d",&a[i]);
09         if(a[i]==0) break;
10         count++;
11     }
12     for(i=1;i<=count;i++)
13     {
14         if(a[i]!=a[i-1])
15         {
16             printf("%d %d ",i-temp,a[i-1]);
17             temp=i;
18         }
19     }