# 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 |