BOJ/Python

백준 1065번 한수 파이썬

띵지니어 2022. 6. 26. 16:57
반응형

https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

 

내 답안

cnt = 99
N = input()
if len(N) < 3:
    print(N)
else:
    for i in range(100, int(N) + 1):
        if int(str(i)[0]) + int(str(i)[2]) == 2 * int(str(i)[1]):
            cnt += 1
        else:
            continue
    print(cnt)

 

처음 이 문제를 봤을 때 생각했던 건

 

1. 1부터 99까지는 모두 한수이다. --> 바로 N 출력

2. N의 범위는 1000까지이다. (모든 경우 따져도 시간 초과 x)

3. 세 자릿수 이상 일 때만 계산해 주면 된다.

 

따라서

N 이 세 자릿수 아래면 N 그대로 출력

if len(N) < 3:
    print(N)

 

N이 세 자릿수 이상이면 --> 100부터 N까지 하나 각 자릿수가 등차수열인지 판별 (슬라이싱 이용)

 

else:
    for i in range(100, int(N) + 1):
        if int(str(i)[0]) + int(str(i)[2]) == 2 * int(str(i)[1]):
            cnt += 1
        else:
            continue
    print(cnt)
반응형
목차(index)