728x90
728x90
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
브루트포스 알고리즘은 노가다를 뜻한다. 처음부터 끝까지 다 시도해보는, 무조건 정답을 발견하는 가장 확실한 방법이다.
소요시간이 많기에 보통 사용하지 않지만, 갖은 방법을 더한 코드보다 무식한 방법이 더 나은 결과를 내는 경우가 있는데,
이를 노가다라 부르지 않고 브루트포스 알고리즘이라 부른다.
시간초과 될 것 같아 N값에서 1씩 빼준 값부터 차례로 계산하려 했는데..
생성자가 여러개인 경우 가장 작은 수를 출력해야 한다는 조건이 있어 불가능함을 깨달았다.
각 자리를 더하는 부분에서 sum()을 사용해봤다.
숫자를 string으로 잠시 바꿔주고 map()을 돌려 쪼갠다음 sum()으로 합해줬다.
그리고 정답을 겟했을 땐 quit()으로 종료시켰다.
N = int(input())
for n in range(1, N):
test = 0
test = n + sum(map(int, str(n)))
if test == N:
print(n)
quit()
print(0)
728x90
728x90
'[Python]BaekJoon.AC' 카테고리의 다른 글
[Python]백준 BaekJoon.AC 15829 : Hashing(ord(), 아스키코드) (0) | 2022.01.06 |
---|---|
[Python]백준 BaekJoon.AC 2798 : 블랙잭(브루트포스 알고리즘) (0) | 2022.01.06 |
[Python]백준 BaekJoon.AC 2775 : 부녀회장이 될테야(2차원 리스트) (0) | 2022.01.06 |
[Python]백준 BaekJoon.AC 2292 : 벌집(list) (0) | 2022.01.05 |
[Python]백준 BaekJoon.AC 10250 : ACM 호텔(ceil, zfill) (0) | 2022.01.05 |
[Python]백준 BaekJoon.AC 4153 : 직각삼각형(while, 제곱) (0) | 2022.01.04 |
[Python]백준 BaekJoon.AC 1085 : 직사각형에서 탈출(min()) (0) | 2022.01.04 |
[Python]백준 BaekJoon.AC 1546 : 평균(list, sort()) (0) | 2022.01.03 |