728x90
반응형
한수
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입출력 예제
입력1
110
출력1
99
입력2
1
출력2
1
입력3
210
출력3
105
풀이
문제에서는 입력 조건으로 1000보다 작거나 같은 자연수 N을 제시했지만, 1000보다 큰 수도 입력될 수 있다고 가정하고 작성하였습니다.
n=int(input())
result=0
def d(n):
count=set() #set 사용
n=str(n)
for j in range(len(n)-1):
count.add(int(n[j+1])-int(n[j])) #각 자리수의 차를 count에 넣기
if len(count)==1: #count의 크기가 1이면 각 자리가 등차수열을 이루므로
return 1 #1 반환
else: #아닐 경우 0반환
return 0
for i in range(1,n+1):
if i>=1 and i<=99: #1부터 99사이의 수는 모두 한수
result+=1
else: #100보다 크거나 같은 수는 d()함수 호출
result+=d(i)
print(result)
99보다 클 경우 d함수를 호출하도록 작성하였습니다.
d함수는 각 자리수의 차를 모두 set에 저장하고, set의 원소 개수가 1이면 1, 1이 아니라면 0을 반환하도록 하였습니다.
728x90
반응형
'Algorithm > 백준' 카테고리의 다른 글
백준(baekjoon) 1157번 단어 공부 풀이 | 파이썬 Python Counter을 활용한 알파벳 빈도 계산 (0) | 2021.02.11 |
---|---|
백준(baekjoon) 10809번 알파벳 찾기 | 파이썬 Python 예외처리 (0) | 2021.02.11 |
백준(baekjoon) 4673번 셀프 넘버 | 파이썬 Python (0) | 2021.02.11 |
백준(baekjoon) 4344번 평균은 넘겠지 | 파이썬 Python (0) | 2021.02.11 |
백준(baekjoon) 8958번 OX퀴즈 | 파이썬 Python (0) | 2021.02.11 |