문제출처 : https://www.acmicpc.net/problem/1065
1. 문제요약
- 입력이 N일 때, 각 자릿수의 차이가 같은 수(한수)의 개수는?
※ 한 자릿수와 두 자릿수의 경우 어떻게 처리되나 했더니
예제에
입력 : 110
출력 : 99
즉, 2자리수 까지는 모두 등차수열로 판단 == 한수
2. 접근방법
n <= 1000보다 작은 자연수 이므로 세 자릿수만 한수인지 확인하면 된다.
3. 시간복잡도
- 두 자릿수 입력만 받는다면 O(1)이겠지만, 3자릿수가 넘어가면 각각의 수에 대해 확인해야하므로 O(N)
1) 각 자릿수의 차를 직접 구해보기
- 세 번째 자릿수 - 두 번째 자릿수 == 두 번째 자릿수 - 첫 번째 자릿수
소스코드
2) 등차수열의 특징을 활용
- 사실 특징이라고 할게 있나...
- a, a+d, a+2d ... 이므로 a + a+2d = (a+d) * 2
소스코드
[출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음]
'먹고살려면 > boj' 카테고리의 다른 글
BOJ 1966 프린터 큐 (0) | 2017.12.26 |
---|---|
BOJ 7568 덩치 (0) | 2017.12.19 |
BOJ 6603 로또 (0) | 2017.12.19 |
BOJ 1182 부분집합의 합 (0) | 2017.12.16 |
BOJ 2309 일곱난쟁이 (0) | 2017.12.13 |