Algorithm/solution
#1065. 한수
silverbell
2017. 12. 24. 13:52
https://www.acmicpc.net/problem/1065
1. 문제 이해
각 자리 수가 등차 수열이 된다면 그 수는 한수 입니다.
2. 접근방법
for문을 이용한 완전탐색을 이용하여 한수를 찾아 보겠습니다.
저는 이 문제의 포인트를 자릿수로 정했습니다.
문제의 조건이 1000이하의 자연수 이므로 1자리에서 3자리 까지만을 고려하면 됩니다.
크게 두가지의 경우로 나뉘게 되는데,
첫 번째, 한 자리수와 두 자리수는 그 자체가 등차 수열이 되므로 곧바로 한수 카운트를 올려줍니다.
두번째, 세자리의 수의 경우에는
'백의자리수 - 십의자리수 = 십의자리수 - 일의자리수' 조건이 같게 되다면 한수 카운트를 올려줍니다.
3. 문제 해결
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> using namespace std; int n, res; void hansu_cnt(int cur) { if (cur / 100 - (cur / 10) % 10 == (cur / 10) % 10 - cur % 10) { res++; } } int main() { cin >> n; if (n > 99) { res = 99; for (int i = 100; i <= n; i++) { hansu_cnt(i); } } else { res = n; } cout << res << '\n'; } | cs |