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 |
'Algorithm > solution' 카테고리의 다른 글
#1463. 1로 만들기 (0) | 2017.12.24 |
---|---|
#10815. 숫자카드 (0) | 2017.12.24 |
#1654. 랜선자르기 (0) | 2017.12.23 |
#11866. 조세퍼스 문제 (0) | 2017.12.01 |
#10828. 스택 (0) | 2017.11.29 |