[BOJ] 1065 한 수
한 수가 무엇인지 잘 정리가 되지 않아서 주석에 정리하면서 문제를 풀었다.
한수는 어떤 양의 정수 X의 각 자리가 등차수열을 이루는 수인데, 한 자리 수와 두 자리 수는 무조건 등차 수열을 이룬다고 볼 수 있다.
그리고 세 자리 수 부터 한 수인지 판단할 필요가 있었고, 첫 번째 자리와 두 번째 자리 수의 차가 계속해서 이어지는 지 판단하여 True Or False를 결정지었다.
이를 함수로 작성하니 함수로 작성하지 않을 때보다 직관적이고 가독성이 높아 보인다.
나의 풀이
#한수 : 어떤 양의 정수 X의 각 자리가 등차수열을 이룸
#등차 수열 : 연속된 두개의 수의 차이가 일정한 수열
# N이 주어졌을 때, 1<= 한수 <=N
# 1 -> 1
# 2 -> 2
# 3 -> 3
# 한자리는 다 한수네
# 10 -> 1 0
# 11 -> 1 1
# 12 -> 1 2
# 13 -> 1 3
# 두 수 간의 간격이기 떄문에 1~99까지는 걍 다 한수임
# 세 자리부터 의미가 생김
# 100 -> 1 0 0 X
# 101 -> 1 0 1 X
N = int(input())
count = 0
def d(num):
num = str(num) #문자화
d = 0
if(len(num) < 3):
return True
else:
for i in range(len(num)):
if(i==1):
d = int(num[i]) - int(num[i-1])
if(i>=2):
if(d != int(num[i]) - int(num[i-1])):
return False
return True
for i in range(1, N+1):
a = d(i)
if(a == True):
count += 1
print(count)