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

+ Recent posts