읽고 말하기 수열 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를 저장해주는 용도로 사용했다.
배열을 두 개 만들어서 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 |
댓글