알고리즘/brute force

백준 2231 파이썬(brute force)

Aytekin 2021. 9. 25. 12:25
728x90
# 2231 분해합

n = int(input())
cons_num = {}
for i in range(1,n+1):
    num = list(map(int,list(str(i))))
    num.append(i)
    cons_num[sum(num)] = []

for i in range(1,n+1):
    num = list(map(int,list(str(i))))
    num.append(i)
    cons_num[sum(num)].append(i)

if n not in cons_num.keys():
    print(0)
else:
    print(cons_num[n][0])

생성자를 역으로 도출하는 방법이 도저히 생각이 안나서

임의의 숫자가 주어지면

그 숫자까지의 생성자를 모두 생성해낸 다음에 딕셔너리와 리스트를 이용해서 답을 구했다.

brute force답게 모든 가능한 경우의 수를 만들어서 약간은 주먹구구식으로 풀었다는 생각이 든다.

 

어찌저찌해서 정답을 만들어내긴 했지만

brute force문제라고 너무 for문을 막 쓰고 있는게 아닌가 하는 생각이 든다.

조금더 스마트하고 기발한 아이디어가 있을 것 같은데 

지금은 점심먹으러 가야겠다...ㅎㅎ

728x90

'알고리즘 > brute force' 카테고리의 다른 글

백준 7568 파이썬(brute force)  (0) 2021.09.25
백준 2798 파이썬(brute force)  (0) 2021.09.25