# [백준] 1065번 - 한수

- Author: @mildsalmon
- Published: 2021-09-05
- Updated: 2021-09-05
- Source: http://blex.me/@mildsalmon/1065%EB%B2%88-%ED%95%9C%EC%88%98
- Tags: 파이썬, 알고리즘, 코딩테스트, 백준, 브루트포스, 실버

---

# 1. 한수

- 난이도
	- 실버 4
- 시간 제한
	- 2초
- 메모리 제한
	- 128 MB
- 기출
	- [1065번: 한수 (acmicpc.net)](https://www.acmicpc.net/problem/1065)

### A. 문제

위 백준 사이트에 접속하여 문제를 확인해주세요.

##### a. 예를 들면. 

N이 128일 때, 1부터 N 사이의 수 중 각 자리가 등차수열을 이루는 수는 다음과 같다.

1  => 수가 1 하나라서 공차가 0인 등차수열
2  => 수가 1 하나라서 공차가 0인 등차수열
3  => 수가 1 하나라서 공차가 0인 등차수열
...
11  => 수가 2개이고 공차가 0인 등차수열
12  => 수가 2개이고 공차가 1인 등차수열
13  => 수가 2개이고 공차가 2인 등차수열
...
111  => 수가 3개이고 공차가 0인 등차수열
123  => 수가 3개이고 공차가 1인 등차수열

##### b. 입력 조건

- 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

##### c. 출력 조건

- 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

##### d. 테스트 케이스

- 입력 예시

	```

	110

	```

	```

	210

	```

- 출력 예시

	```

	99

	```
	
	```

	105

	```
	
### B. 내 답안

```python

x = int(input())  
total_count = 0  
  
for i in range(1, x+1):  
    str_a = str(i)#list(map(int, str(i)))  
 	# d = 0
	if len(str_a) > 1:  
        d = int(str_a[1:2]) - int(str_a[0:1])  
        count = 0  
 		for j in range(1, len(str_a)):  
            if int(str_a[j]) - int(str_a[j-1]) == d:  
                count += 1  
 	else:  
        count = 0  
 	if count == len(str_a)-1:  
        total_count += 1  
  
print(total_count)  
  
# 문제 이해가 어려웠던 문제.  

```

##### a. 회고

> 풀이

-  1~N까지 for문에 돌리면서 각 자리수를 1의 자리 숫자로 보고 등차를 구해서 등차가 반복된다면 성공. 아니면 실패.

> 반성

- 문제 이해가 어려웠던 문제.

# 참고문헌

[baekjoon](https://www.acmicpc.net/user/baekjoon). [1065번: 한수 (acmicpc.net)](https://www.acmicpc.net/problem/1065). Baekjoon. (accessed Sep 5, 2021)
