1️⃣ 정수 N개의 합

def solve(a: list) -> int:
	result = 0
	for i in range(len(a)):
		result += a[i]
	return result

https://docs.python.org/3/library/typing.html

https://realpython.com/python-type-checking/

2️⃣ 셀프 넘버

def selfNum(N):
	selfNumList = [0]*(N+1)  # 0부터 N개까지 생성

	for num in range(1,N+1):	# 1부터 N까지
		while True:
			strNum = str(num)
			units = 0

			for j in range(len(strNum)):  # (3), 굳이 units 변수를 또 쓸 필요는 없다~~!!!!
				units += int(strNum[j])
			num = num + units
			
			if num > N:
				break
			selfNumList[num] += 1

	for i in range(1,N+1):	# 1부터 N까지
		if selfNumList[i] == 0:
			print(i)

selfNum(10000)

3️⃣ 한수

def hanNumber(N: int):
	result = N # 한수의 개수 (1)

	if N // 100 != 0:	# 세자리수 이상일 경우 (2)
		for num in range(100, N+1):  # (2)-(a)
			strnum = str(num)
			d = int(strnum[0]) - int(strnum[1])	# 공차  (2)-(b)

			for i in range(1, len(strnum)-1):	# (num의 자릿수-1)만큼만 계산하면 된다. (2)-(c)
				temp = int(strnum[i]) - int(strnum[i+1])
				if d != temp:
					result -= 1
					break
	
	print(result)

hanNumber( int(input()) )