Back/Algorithm

백준 1065 한수 파이썬

백준 1065 한수 파이썬

www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

n = int(input())
han = 0
for i in range(1, n + 1):
    if i < 100:
        han += 1
    else:
        ns = list(map(int, str(i)))
        print(ns)
        if ns[0] - ns[1] == ns[1] - ns[2]:
            han += 1
print(han)

1 ~ 100 까지는

 

비교할 숫자가 각 자릿수 밖에 없기 때문에, 모두 한수다.

 

for문으로 100 이전에는 계속 +1 해준다.

 

100 이후에는

 

각 자릿수를 스트링값으로 나누어 리스트에 저장하고,

 

스트링으로 나눈 리스트의 각 숫자값들을 계산하고 같으면 한수에 +1 해준다.

 

자릿수가 1000까지 밖에 없어서 이런 점으로 해결이 가능한데,

 

이렇게 카운팅하는 방식은 자릿수가 10억 20억까지 증가하면 빠르게 해결이 안 될 것 같은데,

 

다른 공식은 없는지 생각해볼 것.

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

[JavaScript] Queue  (0) 2022.09.07
백준 1904 01타일 파이썬  (0) 2021.03.21
프로그래머스 카카오 인형 뽑기 파이썬  (0) 2021.03.18
백준 10870 피보나치수5 파이썬  (0) 2021.03.17
Python 백준 1436 영화감독  (0) 2021.03.15