평범한 분할정복문제입니다.
3분할할때 칸막이 설치 위치만 잘 고려해주면 됩니다.
import sys
input = sys.stdin.readline
def count_odd(n):
cnt = 0
for i in n:
if int(i) & 1:
cnt += 1
return cnt
def divided(n, cnt):
global max_v, min_v
s = str(n)
cnt += count_odd(s)
if len(s) == 1:
min_v = min(min_v, cnt)
max_v = max(max_v, cnt)
return
elif len(s) == 2:
divided(n // 10 + n % 10, cnt)
else:
for i in range(1, len(s) - 1):
for j in range(i + 1, len(s)):
new_num = int(s[:i]) + int(s[i: j]) + int(s[j:])
divided(new_num, cnt)
n = int(input())
min_v = float('inf')
max_v = 0
divided(n, 0)
print(min_v, max_v)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 16507 어두운 건 무서워 (0) | 2021.10.18 |
---|---|
[백준][Python] 2670 연속 부분 최대곱 (0) | 2021.10.18 |
[백준][Python] 19948 음유시인영재 (0) | 2021.10.18 |
[백준][Python] 1374 강의실 (0) | 2021.10.16 |
[백준][Python] 21317 징검다리 건너기 (0) | 2021.10.16 |