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

[ BOJ/C# ] 1065 한수

by 왹져박사 2023. 11. 8.

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

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

1위분 코드를 보니 100 이상이면 99를 더해준 후, 그 이후부터 탐색하였다. 

이러한 방법이 맞는건가..? 시간적으로만 본다면 훨씬 효율적이다. 실제로는 어떻게 사용해야할까..

마치 예전에 본 개발 밈이 생각났다.

*출력 문제에서 초보자는 의도대로 알고리즘을 짜 출력하고, 전문가는 *출력을 그대로 입출력하는 밈이었다. 

using System;
using System.IO;

namespace B1065
{
    class Program
    {
        static int count = 0;
        static void AP(int x)
        {
            int n = 10;
            while (true)
            {
                if (x < 10) //10미만일 경우 종료
                {
                    count++;
                    break;
                }
                //각 자리 차이 비교
                int a = x % 10;
                x /= 10;
                int b = x % 10;
                int m = a - b;
                if (n == 10) n = m;
                else if (n != m) break;  //등차수열이 아닌 경우
            }
        }
        static void Main()
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

            int n = int.Parse(sr.ReadLine());
            for (int i = 1; i <= n; i++) AP(i);
            sw.Write(count);
            sr.Close();
            sw.Flush();
            sw.Close();
        }
    }
}

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

[ BOJ/C# ] 9655 돌 게임  (0) 2023.11.11
[ BOJ/C# ] 1475 방 번호  (1) 2023.11.10
[ BOJ/C# ] 4673 셀프 넘버  (0) 2023.11.07
[ BOJ/C# ] 2941 크로아티아 알파벳  (0) 2023.11.06
[ BOJ/C# ] 1789 수들의 합  (0) 2023.11.06