퇴근5분전

친구가 준 문제.. ( 회사 시험... )

 

다음 열의 정수 배열은 다음처럼, 현재 열의 각 정수와 그 정수가 연속적으로 나타나는 개수의 쌍으로 구성된다.
1
1 1 → 위의 열은, 1이 하나다.
1 2 → 위의 열은, 1이 두 개다.
1 1 2 1 → 위의 열은, 1이 하나, 2가 두 개다.
1 2 2 1 1 1 → 위의 열은, 1이 두 개, 2가 하나, 1이 하나다.
1 1 2 2 1 3 → 위의 열은, 1이 하나, 2가 두 개, 1이 세 개다.
1 2 2 2 1 1 3 1 → ...
1 1 2 3 1 2 3 1 1 1 → ...

0으로 시작하는 주어진 인덱스 M에 대해서,
M을 각 열의 인덱스라고 하자.
인덱스 M이 가리키는 열의 정수 배열은 무엇인가?

예를 들어,
만일 M=4 라면,
답은 "1 2 2 1 1 1"이다

 

 

C# 구현. ( 1시간 걸림. 삽질 30분후에 뭔가 안맞는것 같아 고민 하던 중에... )

 

            List<int> result = new List<int>();
            int[] prms = new int[] { 1 };
            int x = 0;
            int M = 5;
            for (int loop = 0; loop < M; loop++)
            {
                x = 0;
                for (int idx = 0; idx < prms.Length; idx++)
                {
                    if (x != prms[idx])
                    {
                        result.Add(prms[idx]);
                        result.Add(1);
                        x = prms[idx];
                    }
                    else
                        result[result.Count - 1]++;
                }

                textBox1.AppendText("" + loop + "] " + string.Join(" ", prms) + Environment.NewLine);

                prms = result.ToArray();
                result.Clear(); 
            }

 

'# 1) 프로그래밍' 카테고리의 다른 글

달력 컨트롤] 새로 만든 달력!!!  (0) 2014.01.26
알고리즘] 2  (0) 2013.11.15
C#] 문자열 정렬처리...  (0) 2013.11.10
.net] 모니터링 프로그램...  (0) 2012.05.13
.NET] 트리 뷰_ 체크박스 - 더블클릭  (0) 2012.04.09