Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 15685
- 백준 16236
- 프로래머스
- java 기술면접
- 백준 19238
- spring oauth
- MSA
- JVM
- 백준 17779
- Spring Boot
- 파이썬
- JPA
- 백준 17626
- re.split
- 프로그래머스
- MySQL
- springboot
- Spring
- java
- 백준 파이썬
- Coroutine
- sql 기술면접
- 웹어플리케이션 서버
- Kotlin
- 백준 16719
- 백준 16235
- spring security
- spring cloud
- with recursive
- 백준
Archives
- Today
- Total
시작이 반
[백준] 20164번 (python 파이썬) 본문
SMALL
구현, 재귀 문제이다.
여기서 생각해야 하는 문제는 숫자가 세자리 이상일때 3등분을 해야 하는데 어떻게 해야할지 이다.
간단하게 모든 경우의 수를 구하여 3등분을 한다.
2중 반복문을 통해서 구역을 나눌수 있다.
분할한 구역으로 새로운 숫자를 만들어서 다시 재귀를 돌린다.
새로운 숫자가 한자리 숫자일때까지 재귀를 돌린다.
import math
n = input()
min_v = math.inf
max_v = 0
def command1(n: str):
odd_n = 0
for i in n:
if int(i) % 2 != 0:
odd_n += 1
return odd_n
def solve(n, odd_n):
global max_v, min_v
if len(n) == 1:
min_v = min(min_v, odd_n)
max_v = max(max_v, odd_n)
elif len(n) == 2:
temp = str(int(n[0]) + int(n[1]))
solve(temp, odd_n + command1(temp))
else:
for i in range(len(n) - 2):
for j in range(i+1, len(n)-1):
a = n[:i+1]
b = n[i+1: j+1]
c = n[j+1:]
temp = str(int(a) + int(b) + int(c))
solve(temp, odd_n + command1(temp))
solve(n, command1(n))
print(min_v, max_v)
LIST
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 16719번 (python 파이썬) (2) | 2021.04.07 |
---|---|
[백준] 14719번 (python 파이썬) (0) | 2021.04.06 |
[백준] 20207번 (python 파이썬) (0) | 2021.04.05 |
[백준] 15787번번번 (python 파이썬) (0) | 2021.04.02 |
[백준] 17276번번번 (python 파이썬) (0) | 2021.04.01 |