한수 = 어떤 양의 정수 X의 각 자리수가 등차수열을 이루는 것.
이 문제는 이전 백준 문제 Self number에서 구하는 방식과 일맥 상통하는 부분이 있었다!
미리 배열 앞뒤에 차이를 구해놓고, 쭉 이거랑 달라지는지 check 하는 방식으로 해결 가능할 듯 하다.
#include<iostream>
#include<vector>
using namespace std;
int N;
int cnt;
void hansu(int n) {
vector<int>sample;
while (n!=0) {
int temp;
temp = n % 10;
n = n / 10;
sample.push_back(temp);
}
if (sample.size() == 1) {
cnt++;
return;
}
int check = 0;
int term = sample[0] - sample[1];
for (int i = 1; i < sample.size() - 1; i++) {
int sample_term;
sample_term = sample[i] - sample[i + 1];
if (sample_term != term)check++;
}
if (check == 0)cnt++;
}
int main() {
cin >> N;
cnt = 0;
for (int i = 1; i <= N; i++)hansu(i);
cout << cnt << endl;
}
각 자리수를 구하는 방법을 이해한게 벌써 도움이 됐다.