백준이당

[C++] 백준 1065번 : 한수

이히당 2023. 11. 28. 17:24

1065번: 한수 (acmicpc.net)

 

1065번: 한수

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

www.acmicpc.net

 

뭔가 보고 디피문제라고 생각했는데..

범위가 1~999라서 아닌가?라고 생각을 고쳐먹었다.

디피도 까먹어서ㅠ

 

그냥 직관적으로 풀었다.

한자리와 두자리는 그냥 등차수열이라 볼 수 있으니까 그 숫자 그대로 출력하고,

3자리수, 특히 111부터 크리티컬하다는 것을 염두했다..

그리고 숫자를 하나씩 증가하면서 내가 처음 입력한 숫자까지의 한수가 몇개인지를 헤아렸다.

 

// 한수
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool isLimit(int limitnum, int curr)
{
    bool limit = false;
    if (limit < curr)
        true;
    return limit;
}

// dp 문제 푸는것마냥 풀어야 돼
int main()
{
    int n, cnt = 0;
    cin >> n;
    // vector<int> arr(n);

    // 몆자리 수인가
    int volumn = n / 100;

    if (volumn < 1)
    { // 만약 한,두자리면
        cout << n;
    }
    else
    {
        cnt = 99;
        int curr = 111;
        while (curr <= n)
        {
            if ((curr / 100 - (curr / 10) % 10) == ((curr / 10) % 10 - (curr % 10)))
            {
                cnt++;
            }
            curr++;
        }
        cout << cnt;
    }
}

 

파이팅

728x90