[백준 1065번-파이썬/Python] 한수
알고리즘 공부/BOJ백준 풀이

[백준 1065번-파이썬/Python] 한수

http://acmicpc.net/problem/1065

 

{코드}

n = int(input())
if n < 100:
	print(n)
else:
	cnt = 99
	for i in range(100, n+1):
		d = tuple(map(int, str(i)))
		if d[0]-d[1] == d[1]-d[2]:
			cnt += 1
	print(cnt)

{설명}

이 문제는 등차수열인지 아닌지를 판별하는 문제입니다.

이때 몇 가지 방법을 통해 코드를 줄일 수 있는데 만약 N이 100보다 작다면 무조건 등차수열이므로 바로 N을 출력하면 됩니다.

또한 1000은 등차 수열이 될 수 없습니다.

그러면 결국 N보다 같거나 작은 세 자리 숫자들만 등차수열의 여부를 판별하면 됩니다.

판별 방법은 (백의 자릿수)-(십의 자릿수) == (십의 자릿수)-(일의 자릿수) 라면 등차수열입니다.

그러므로 N이 백보다 작다면 N, 백보다 크다면 99(백보다 작은 자연수의 개수) + 등차수열인 N이후의 세 자릿수가 됩니다.