⚡️algorithm

[완전탐색, 브루트포스] 백준 1065. 한수

남남이루 2022. 6. 6. 22:16

문제

n이 가진 한수 개수를 출력하라,
한수는 어떤 양의 정수 X의 각 자리가 등차수열을 이루는 수이다.

브루트포스

무차별 대입으로 해를 구하는 방식이다.

내 코드

x = int(input())
cnt = 0

for n in range(1,int(x)+1):
    if n//10 <=9:
        cnt += 1
    lst = [int(nn) for nn in str(n)]

    if len(lst)>2:
        d = lst[0] - lst[1]
        flag = True
        for idx in range(len(lst)-1):
            if d != lst[idx] - lst[idx+1]:
                flag = False
                break
        if flag:
            cnt += 1

print(cnt)

배울 코드

if x < 100:
    print(x)
else:
    print(len(list(filter(lambda x: int(str(s)[2]) == 2*int(str(x)[1])- int(str(x)[0]), range(111,x+1))))+99)

filter를 풀어쓰면 아래처럼 된다!

x = int(input())
cnt = 0
if x < 100:
    print(x)
else:
    cnt = 99
    for s in range(111, x+1):
        if int(str(s)[2]) - int(str(s)[1]) == int(str(s)[1]) - int(str(s)[0]):
            cnt += 1
    print(cnt)