1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
count = 0
n = int(input())
b = 0
if 99 <= n < 111:
print(99)
elif 111<= n<123:
print(100)
elif n<99:
print(n)
elif 123<=n:
for i in range(123,n+1):
a=list(map(int,list(str(i))))
for j in range(len(a)-2):
b=a[j+1]-a[j]
if b != a[j+2]-a[j+1]:
count -=1
answer = 99 +(n -121) +count
print(answer)
이 문제도 완탐으로 풀었는데
사실 더 간단하게 푸는 방법이 있을 거 같다.
등차수열을 만들어주면서 count 해주면 될거 같기도...
암튼 어렵지는 않았다.
완전 탐색을 하다 보면 어려운 점이 조건을 계속 생각해줘야 한다는 점...
반응형
'코딩 > 파이썬(python)' 카테고리의 다른 글
파이썬 가상환경 구성하기 (0) | 2021.07.08 |
---|---|
filter (0) | 2021.06.09 |
배열에서 특정 요소 찾기 (0) | 2021.05.06 |
from collections import Counter , .most_common() (0) | 2021.05.02 |
enumerate 인덱스와 수를 같이 저장하자 (0) | 2021.04.15 |