우선 개인적으로 생각하기에 간단하면서 코드를 읽고 이해하기 가장 쉬운 방법이다.
def check(n):
cnt = 0
if (n < 100):
return n
우선 주어진 조건을 봤을때 1000 보다 작거나 같은 자연수 N이 주어진다.
하지만 한수는 1~99까지는 한수이기때문에 N의 값이 100미만 일땐 n의 값을 그대로 return 해주는 조건을 작성한다.
else:
for i in range(100, (n + 1)):
그러고나서 i에 100부터 n+1의 범위를 지정하여 값을 지정한다. 앞선 if문에서 이미 100미만은 값을 return 했기 때문에, 따라서 시작 범위는 100이상 부터 시작한다.
hund = (i // 100)
ten = (i % 100) // 10
one = (i % 100) % 10
그러고나서 각 백의자리, 십의자리, 일의자리 를 지정한다.
if ((ten - one) == (hund - ten)):
cnt += 1
return (99 + cnt)
십의자리와 일의자리의 차이와 백의자리와 십의자리의 차이가 같으면 cnt에 1씩 더하여 한수의 갯수를 구한다
그다음 1~99는 이미 한수 이기때문에 99+cnt 를 리턴하여 값을 보낸다.