문제 링크 : https://www.acmicpc.net/problem/1065


해결 방법 :

문제를 보면 각 자리 숫자가 등차수열을 이루는 것을 한수라고 했다.

testcase를 보고 처음에 조금 이상했는데 그 이유는 1,2,3,4,5,6과 같은 숫자도 등차수열로 카운팅 됫다는 점이다. 

일의자리숫자들은 등차라는 것이 없는 것인데.. 무튼 0의 등차가 있다라고 생각하고 이것만 예외로 생각하고 나면

간단하게 나머지 숫자들은 자리수를 각각 추출해서 등차가 같은지만 확인해서 카운팅 해주면 한수의 수를 구할 수 있다.


(참고)백의자리수 - 십의자리 == 십의자리 - 일의자리 



소스코드)


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
27
28
29
30
31
#include<stdio.h>
int main()
{
    int N;
    int ret;
    int hundred;
    int ten;
    int one;
    int cnt = 0;
    scanf("%d",&N);
    if(N<100)
    {
        printf("%d\n",N); // 십의자리수들은 그숫자만큼 한수존재
    }
    else
    {
        ret = 99;
        for(int i = 100; i<=N; i++)
        {
            hundred = i/100;
            ten = (i - hundred*100)/10;
            one = i- ((hundred*100+ (ten*10));
            if(hundred-ten == ten-one)
            {
                cnt++; // 등차가 같은 것을 카운팅해줌
            }
        }
        ret+= cnt;
        printf("%d\n",ret);
    }
}
cs


반응형

'PS > 백준' 카테고리의 다른 글

7490번 0 만들기  (0) 2018.12.05
1003번 피보나치 함수  (0) 2018.12.02
1110번 더하기 사이클  (0) 2018.11.14
2448번 별 찍기 - 11  (0) 2018.11.12
1966번 프린터 큐  (0) 2018.10.28

+ Recent posts