알고리즘/백준 BOJ
[ BOJ/C# ] 1065 한수
왹져박사
2023. 11. 8. 19:26
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();
}
}
}