[백준1065]한수

준블리·2021년 11월 21일
0

백준

목록 보기
2/8

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

1. 문제 이해

한수 = 어떤 양의 정수 X의 각 자리수가 등차수열을 이루는 것.

이 문제는 이전 백준 문제 Self number에서 구하는 방식과 일맥 상통하는 부분이 있었다!

미리 배열 앞뒤에 차이를 구해놓고, 쭉 이거랑 달라지는지 check 하는 방식으로 해결 가능할 듯 하다.

2. 소스 코드

#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;
}

3. 느낀 점

각 자리수를 구하는 방법을 이해한게 벌써 도움이 됐다.

4. 얻어가는 Tip

  1. 한 수
profile
★ 작심삼일을 삼일에 한번씩 ★ 주로 C++ 입니다~

0개의 댓글