오늘은 백준 알고리즘 2231번 분해합을 풀어보았다. 물론 파이썬을 사용했다.
이 문제는 브루트 포스라는 개념을 이용하는 것이다.
문제를 보면 그렇게 어렵지는 않다. 항상 그렇지만 이해만 한다면 말이다.
#생각 1. 첫줄에 N을 입력으로 받고, 가작 작은 생성자를 구해야한다.
#생각 2. N이 주어지면, 1씩 빼면서 각각 분해합을 구하고, 가장 작은 분해합을 저장한다.
#생각 3. 부분합을 구하는 부분은 함수처리 해주면 될 것 같다.
이렇게 문제를 쪼개어서 코드를 작성했다.
이렇게 해서 완성된 코드는
def dis_sum(N):
M = str(N)
result = 0
for i in M:
result = result + int(i)
result = result + N
return result
N = int(input())
min_N = N
for i in range(N):
max_N = N-i
if dis_sum(max_N) == N:
min_N = min(max_N,min_N)
if min_N == N:
print("0")
else:
print(min_N)
위와 같다.
제일 처음에 있는 함수 부분은, 입력된 값의 부분 합을 구하는 과정이다.
이후, N을 입력을 받고. N의 범위 내에서 1씩 감소시키면서 부분합인지 아닌지 판별 하고
만약 부분합이라고 판별되면, 원래 저장했던 값보다 더 작은 값을 저장한다.
이 문제는 그렇게 어렵지 않았다.
출처
https://www.acmicpc.net/problem/2231
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 1018번 체스판 다시 칠하기, 파이썬 설명 (2) | 2020.09.13 |
---|---|
[백준 알고리즘/python] 백준 7568번 덩치, 파이썬 설명 (0) | 2020.09.13 |
[백준 알고리즘/python] 백준 2798번 블랙잭, 파이썬 (0) | 2020.05.01 |
[백준 알고리즘/python] 백준 2775번 부녀회장이 될테야, 파이썬 (0) | 2020.04.03 |
[백준 알고리즘/python] 백준 10250번 ACM 호텔, 파이썬 (0) | 2020.04.02 |
댓글