알고리즘(C++)/백준 알고리즘
1065번 : 한수
개발하는꼬물이
2018. 5. 3. 16:53
1. 문제 요약
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라 한다.
등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
같은 한수의 개수를 출력하는 프로그램을 작성하시오. (0 < N <= 1000)
2. 예제 입력
110
3. 예제 출력
99
4. 코드
#include <iostream> using namespace std; int CountNum(int n) { int pos[3] = { 0 }; // 자릿수를 저장할 변수 int count = 0; // 한수의 갯수 if (n < 100) count = n; // 1자리수, 2자리수는 모두 비교 대상이 없어서 한수로 인정 else { count = 99; for (int i = 100; i <= n; i++) { if (i == 1000) return count; pos[0] = i / 100; // 100의 자리 pos[1] = (i - pos[0] * 100) / 10; // 10의 자리 pos[2] = i % 10; // 1의 자리 if ((pos[0] - pos[1]) == (pos[1] - pos[2])) { count++; } } } return count; } int main() { int num; int result = 0; cin >> num; if (num <= 0 || num > 1000) return -1; result = CountNum(num); cout << result << endl; return 0; }