문제 : https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
Sol )
1. 100 이하의 수는 모두 한수이므로 즉시 리턴
2. 100이상의 경우 일의자리와 십의자리의 차이 값을 기록한다. (dif 변수)
3. n을 10으로 나눠가면서 십의 자리수와 일의 자리수를 계속 비교
4. 십의 자리와 일의 자리의 차이값이 dif 값과 다르면 false
5. n의 모든 자릿수의 차이가 같으면 true 리턴
소스코드 )
n = int(input())
cnt = 0
def hansoo(n):
if n<100:
return 1
prev = n%10
n //= 10
dif = n%10 - prev
while n:
if dif != n%10 - prev:
return 0
prev = n%10
n //= 10
return 1
for i in range(1,n+1):
cnt += hansoo(i)
print(cnt)
'Problem Solving > boj.kr (Python)' 카테고리의 다른 글
[BOJ / 파이썬] 11654 : 아스키 코드 (0) | 2022.02.13 |
---|---|
[BOJ / 파이썬] 2557 : Hello World (0) | 2022.02.13 |
[BOJ / 파이썬] 4673 : 셀프 넘버 (0) | 2022.02.07 |
[BOJ / 파이썬] 4344 : 평균은 넘겠지 (0) | 2022.02.07 |
[BOJ / 파이썬] 8958 : OX 퀴즈 (0) | 2022.02.07 |
댓글