본문 바로가기
알고리즘/백준 BOJ

[ BOJ/C# ] 9461 파도반 수열

by 왹져박사 2023. 9. 24.
728x90

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

 

9461번: 파도반 수열

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

www.acmicpc.net

다이나믹 프로그래밍 문제이다. 

문제 자체에 케이스도 많이 보여주었기 때문에 쉽게 풀 수 있는 문제였다. 

다만, 처음 제출이 틀렸다. DP가 틀렸을 거라는 생각을 안 했기 때문에 반례를 찾으려 뒤의 숫자들을 넣어봤다. 

100까지밖에 안했기 때문에, 100 가까이 넣어보니 음수로 출력되었다. (오버플로우)

이 문제를 해결하기 위해 dp배열의 자료형을 int 대신 long으로 바꿔주었더니 해결되었다. 

using System;
using System.Text;

namespace B9461
{
    class Program
    {
        static void Main()
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
            StringBuilder sb = new StringBuilder();

            int t = int.Parse(sr.ReadLine());
            long[] dp = new long[101];
            int index = 3;
            for (int i = 1; i <= 3; i++) dp[i] = 1;
            for(int i = 0; i < t; i++)
            {
                int n = int.Parse(sr.ReadLine());
                if (n > index)
                {
                    for(int j = index + 1; j <= n; j++)
                        dp[j] = dp[j - 2] + dp[j - 3];
                    index = n;
                }
                sb.Append(dp[n] + "\n");
            }
            sw.Write(sb);
            sr.Close();
            sw.Flush();
            sw.Close();
        }
    }
}

자료형을 바꿔주기 전
자료형을 long으로 바꾼 후

728x90

'알고리즘 > 백준 BOJ' 카테고리의 다른 글

[ BOJ/C# ] 11724 연결 요소의 개수  (0) 2023.09.26
[ BOJ/C# ] 2606 바이러스  (0) 2023.09.24
[ BOJ/C# ] 11727 2×n 타일링 2  (0) 2023.09.23
[ BOJ/C# ] 11726 2×n 타일링  (0) 2023.09.22
[ BOJ/C# ] 1003 피보나치 함수  (0) 2023.09.21