문제링크:https://www.acmicpc.net/problem/1065
한수라는 특이한 개념을 이용한 문제이다.
오늘 푼 문제들 중 가장 오래 걸렸던것 같다.
어디에서 해맸는지도 너무 많아서 헷갈릴 정도,,,
마지막에는 공차값을 절댓값으로 계산해서 그 갯수가 초과되서 나오는 경우였다.
def de(a):
c = 0
for i in range(a):
d_list = []
num = str(i+1)
if len(num) == 1:
c += 1
else:
l = list(map(int, num))
for j in range(1, len(num)): # 인덱스 값
margin = (l[j] - l[j-1])
d_list.append(margin)
if min(d_list) == max(d_list):
c += 1
print(c)
n = int(input())
de(n)
코드 간단화
N = int(input())
a = list(range(1,1000))
for i in range(100,1000):
if (i%10)+(i//100) != 2*((i//10)%10):
a[i-1] = 0
print(sum([i>0 for i in a[:N]]))
n = int(input())
han = 0
for i in range(1, n + 1):
if i < 100:
han += 1
else:
ns = list(map(int, str(i)))
if ns[0] - ns[1] == ns[1] - ns[2]:
han += 1
print(han)
이 답변이 간결함과 직관을 더 갖춘것 같다.