Baekjoon 문제 풀기 (2163번 : 초콜릿 자르기) Python
2163번 : 초콜릿 자르기
1. 문제읽기
규칙 찾기
초콜렛을 자를 때의 규칙을 찾아야 한다.
그림을 그려가며 풀었는데.. 세로로 무조건 자르는 것으로 고정하고 n,m의 초콜렛을 잘랐을 때 한번 자르면 n-1,m의 초콜렛과 1,m의 초콜렛으로 나누어진다는 것까지는 생각했다.
여기서 나는 동적계획법과 재귀의 개념을 사용해서 풀었는데 너무 간 것 같다 ㅋㅋㅋ
맞은 이유는 n,m이 300이하라는 작은 수였기 때문에 가능했던 것 같다.
아마도 큰 수가 들어가면 시간초과로 실패가 뜨지 않을까싶다.
2. 제출 코드
n, m = map(int, input().split())
def func(n, m):
if n == 1:
return m - 1
return 1 + func(n - 1, m) + func(1, m)
print(func(n, m))
3. 공부할 것
규칙을 알고나니 바로 이해가 갔다.
print(N-1 + (M-1)*N)
가 그 규칙인데, 세로로 먼저 쪼갠다고 생각한다면 n보다 1번 덜 쪼갤 것이고 그 나눠진 조각은 n개가 나올 것이고 그 n개의 나눠진 조각은 각각 m-1번씩 쪼개진다.
그래도 혼자 힘으로 성공한 것으로 만족..
댓글남기기