문제:

어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한 수의 개수를 출력하는 프로그램을 작성하시오.

입력:

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

출력:

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

풀이방법:

100미만의 수는 항상 등차수열을 이루게 된다. 자릿수가 하나인 경우에는 그 수가 수열이 되는 경우이고 자릿수가 두자리인 경우에는 두 자릿수의 차이ㅣ만큼 등차수열을 이룬다고 생각할 수 있다. 따라서 이문제는 자릿수가 3자리인 경우에만 따져주면 된다. 3자리에서 한수가 되는 경우는 다음과 같다.

n-a , n, n+a 와 같이 a만큼의 등차를 가지는 수열이 3자리에서의 한수이다. 따라서 각 자릿수의 합이 가운데 수의 3배한 값과 같을 때 한수가 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(n):
    if n <100:
        answer=n
        return answer
    else:
        answer=99
        for i in range(100,n+1):
            a=list(str(i))
            a=list(map(int,a))
            if sum(a)/3==a[1]:
                answer+=1
        return answer
n=int(input())
answer=solution(n)
print(answer)
cs


'Algorithm > Python' 카테고리의 다른 글

[BOJ]1157. 단어 공부  (0) 2019.04.05
[BOJ]1152. 단어의 개수  (0) 2019.04.04
[BOJ]1110. 더하기 사이클  (0) 2019.04.02
[BOJ]4344. 평균은 넘겠지  (0) 2019.04.01
[BOJ]2839.설탕 배달  (1) 2019.03.31

+ Recent posts