본문 바로가기
개발

읽고 말하기 수열(개미 수열) C# 구현

by plzfday 2018. 3. 31.

읽고 말하기 수열 C# 구현

베르나르 베르베르 작가의 《개미》에서 소개되어서 유명해졌다고 위키피디아에 적혀 있다. 나도 어렸을 때 한 번 본 것 같은데 그 땐 프로그래밍을 안 했겠지..?
 

규칙

첫 번째 수열: 1
두 번째 수열: 1이 1개 = 11
세 번째 수열: 1이 2개 = 12
네 번째 수열: 1이 1개 2가 1개 = 1121
다섯 번째 수열: 1이 2개 2가 1개 1이 1개 = 122111
여섯 번째 수열: 1이 1개 2가 2개 1이 3개 = 112213
.
.
.
 
이런 규칙을 갖고 있는 수열이다.
 
처음에는 string으로 하려고 했지만 너무나 삽질을 하고 int[]로 돌아갔다... ㅠ
배열을 두 개 만들어서 arr1을 중심으로 두고 arr2를 다른 숫자가 나올 때마다 count를 저장해주는 용도로 사용했다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Class4
    {
        static void Main(String[] args)
        {
            int[] arr1 = new int[500];
            int[] arr2 = new int[500];
            int cnt = 1, a = 0, b = 0;

            arr1[0] = 1;
            
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("1번째 수열: " + arr1[0]);
            for(int i = 0; i < n; ++i)
            {
                while(arr1[a] != 0)
                {
                    if (arr1[a] == arr1[a + 1])
                        cnt++;
                    else
                    {
                        arr2[b] = arr1[a];
                        arr2[b + 1] = cnt;
                        b += 2;
                        cnt = 1;
                    }
                    a++;
                }
                Array.Copy(arr2, arr1, arr2.Length);
                a = 0; b = 0;
                Console.Write(i + 2 + "번째 수열: ");
                foreach (var item in arr1)
                {
                    if (item == 0) break;
                    Console.Write(item);
                }
                Console.WriteLine();
            }
        }
    }
}

'개발' 카테고리의 다른 글

[JAVA]JAVA 시험 정리  (0) 2018.04.25
자바 default 지정자는 패키지 private이라고도 한다.  (0) 2018.04.11
C# 프로그래밍 첫걸음(1)  (0) 2018.03.31
[파이썬] 바운스! 게임  (0) 2017.10.09
C의 역사, C의 장단점  (0) 2017.04.03
Programming Projects in Chapter 2  (0) 2017.03.29

댓글