본문 바로가기

Dev. Etc/Algorithm

[Python] 백준 알고리즘 2163번 문제풀이 (초콜릿 자르기)

 

 

www.acmicpc.net/problem/2163

 

2163번: 초콜릿 자르기

정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿

www.acmicpc.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n, m = map(int, input().strip().split())

def sloveFun(n, m):
    return (n-1) + n * (m-1)

print(sloveFun(n, m));

n, m 변수에 각각 숫자를 입력하여 저장해줍니다.

sloveFun이라는 함수를 선언해서 매개변수 n과 m을 받고 위 문제에서의 계산식으로 계산하여 리턴해줍니다.

예를 들어 5 4을 입력하여 5x4의 초콜릿이 있다고 가정합니다.

가로로 4번을 자르면 1x4짜리가 5조각이 나오고, 이 5조각을 각각 3번씩 자르면 1x1짜리의 초콜릿으로 나누어집니다.

위에서 n=5 / m=4이기에 식으로 만들어본다면,

가로로 (n-1)번을 자르면 1xm짜리가 n조각 나오고, 이 n조각을 각각 (m-1)번씩 자르면 1x1짜리의 초콜릿으로 나누어집니다.

 

여기서 자른횟수를 구하면 가로에서 (n-1)번 잘랐고, 세로에서 n개의 조각을 각각 (m-1)잘랐기에 이것을 더해주면

(n-1) + n(m-1)이 됩니다.