백준이당
[C++] 백준 1065번 : 한수
이히당
2023. 11. 28. 17:24
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