동식이 취업시키기 작전/코딩테스트

[백준] 9461 파도반수열(C#)

이동식이 2024. 1. 26. 17:52
728x90

문제

https://www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

처음에 이미지보고 ??? 이랬는데, 삼각형을 보고 삼각형의 각 변을 나열해보니 규칙성을 찾을 수 있었다.

코드

using System;
using System.Text;
using System.Collections.Generic;

namespace dongsik
{
    class Algorithm
    {
        static void Main(string[] str)
        {
            int input = int.Parse(Console.ReadLine());
            
            for(int i = 0; i < input; i++) 
            {
                int num = int.Parse(Console.ReadLine());
                long[] arr = new long[num];
                long init = 1;

                if(num <= 3)
                {
                    Console.WriteLine("1");
                    continue;
                }
                
                arr[0] = arr[1] = arr[2] = init;
                
                for(long j = 3; j < arr.Length; j++)
                {
                    arr[j] = arr[j-3] + arr[j-2];
                }
                Console.WriteLine(arr[num-1]);
            }
        }
    }
}

고민

위 조건으로 문제를 풀었고 처음엔 틀렸다. 손으로 디버깅해봐도 이유를 못찾았는데, int형이 100을 넘으면 음수가 나오는 이슈가 있어서 long타입으로 변경했더니 맞았다!! 타입의 중요성을 다시 상기했다.