Tech/Algorithm

[BOJ] 백준 1065 한수 c++ (브루트포스)

0m1n 2022. 1. 11. 15:15
728x90
반응형

문제 출처 : https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

풀이

간단한 브루트포스 문제이다.

 

100 미만의 수는 모두 한수이므로 그대로 출력하고, 세 자리 수는 각 자리 수를 구해준다.

ex) 216 : c= 2, b = 1, a = 6

 

등차수열은 연속된 두 개의 수의 차이가 일정한 수열 이므로 c - b = b - a 일 경우 한수이다.


 

코드

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
	ios::sync_with_stdio(false); cin.tie(NULL);

	int N; cin >> N;

	if(N < 100) cout << N;
	else if(N == 1000) cout << 144;
	else{
		int cnt = 99;
		int a, b, c = 0;
		for(int i = 100; i <= N; i++){
			a = i % 10;
			b = (i / 10) % 10;
			c = (i / 100) % 10;
			if(c - b == b - a) cnt++;		
		}

		cout << cnt;
	}

	return 0;
}
728x90
반응형