BOJ/Python
백준 1065번 한수 파이썬
띵지니어
2022. 6. 26. 16:57
반응형
https://www.acmicpc.net/problem/1065
내 답안
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)
반응형