incastle의 콩나물
[알고리즘] 백준 1065번, 한수, 함수 만들기, python(9) 본문
문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
max_number = int(input())
# 한수를 확인할 max_number
count = 0
# 한수 count
for number in range(1,max_number+1):
# max_number 아래로 하나씩 접근
num_list=list(str(number))
gap = []
# 등차수열 gap 확인
if len(num_list) == 1 or len(num_list) == 2:
count += 1
# 일의 자리, 십의 자리는 모두 한수
else:
for i in range(0,len(num_list)-1):
gap.append(int(num_list[i])-int(num_list[i+1]))
# 그 외는 차이를 확인
if gap.count(gap[0]) == len(gap):
count += 1
# gap의 첫 번째 원소가 gap list에 몇 번 있는지 체크, 그 숫자가 gap의 크기와 동일하면 count
print(count)
'python > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1152번, 단어의 개수, 1차원 배열 사용하기, python(12) (0) | 2019.04.13 |
---|---|
[알고리즘] 백준 2920번, 음계, 1차원 배열 사용하기, python(11) (0) | 2019.04.13 |
[알고리즘] 백준 1110번, 더하기 사이클, if문 활용, python(8) (0) | 2019.04.08 |
[알고리즘] 백준 10871번, X보다 작은 수, if문 활용, python(7) (0) | 2019.04.08 |
[알고리즘] 정수 배열(int array)가 주어질 때 가장 큰 이어지는 원소들의 합을 구하기, Brute force, python(4) (0) | 2019.04.05 |
Comments