728x90
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
코드
def check(num, a: list):
if num < 100:
return
else:
n = list(map(int, str(num)))
if n[0] - n[1] != n[1] - n[2]:
a.remove(num)
if __name__ == '__main__':
limit = int(input())
numbers = list(range(1, limit+1))
for i in range(limit+1):
check(i, numbers)
print(len(numbers))
코드 설명
한수인지 판단하여 한수가 아니면 list에서 삭제하는 함수 check(num, a)를 정의 하였다.
100보다 작은수는 모두 한수이므로 num이 100보다 작으면 아무 것도 하지 않는다.
100보다 크면, n에 num의 각 자리 수를 저장한다.
만약 각 자리 수들이 등차수열을 이루지 않는다면 리스트 a에서 num을 지운다.
def check(num, a: list):
if num < 100:
return
else:
n = list(map(int, str(num)))
if n[0] - n[1] != n[1] - n[2]:
a.remove(num)
main함수에서는 우선 사용자에게 자연수를 입력 받는다.
1부터 limit까지의 요소들을 가지고 있는 리스트 numbers를 정의한다.
각 요소들이 한수인지 판단하기 위하여 check함수를 호출한다.
마지막으로 리스트 numbers의 길이를 출력한다.
if __name__ == '__main__':
limit = int(input())
numbers = list(range(1, limit+1))
for i in range(limit+1):
check(i, numbers)
print(len(numbers))
728x90
'Language > Python' 카테고리의 다른 글
[BAEKJOON]백준 10809번: 알파벳 찾기 파이썬 (0) | 2021.02.13 |
---|---|
[BAEKJOON]백준 11720번: 숫자의 합 파이썬 (0) | 2021.02.13 |
[BAEKJOON]백준 4673번: 셀프 넘버 파이썬 (0) | 2021.02.08 |
[BAEKJOON]백준 15596번: 정수 N개의 합 (0) | 2021.02.08 |
[BAEKJOON]백준 8958번: OX퀴즈 파이썬 (0) | 2021.02.05 |