백준 1065 한수

Dreamer_01·2021년 1월 9일
0

알고리즘 풀이

목록 보기
23/34

문제링크: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)

이 답변이 간결함과 직관을 더 갖춘것 같다.

0개의 댓글

관련 채용 정보