본문 바로가기
Programming/Python

[ Python ] 백준 2163번 초콜릿 자르기 풀이

by 코뮤(commu) 2020. 12. 27.
728x90
반응형

www.acmicpc.net/problem/2163

 

2163번: 초콜릿 자르기

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

www.acmicpc.net

 

 

 

 

 

 

 

문제는 이러합니다.

 

이 문제는 map 함수를 사용해 int() 를 대체해보도록 하겠습니다.

(굳이 map 함수를 쓰지 않아도 됩니다. 그냥 다른 형식으로 풀어보고 싶었을 뿐입니다,,)

 

 

map 함수는 파이썬의 내장함수로, 다수의 데이터를 한번에 다른 형태로 변환해줍니다.

 

 

map(변환 함수, 데이터)

 

 

형태는 이러합니다.

 

 

본격적으로 문제를 풀어보도록 하겠습니다.

 

 

초콜릿의 가로길이를 n, 세로 길이를 m 이라고 가정합시다.

 

초콜릿의 가로 길이가 n이라면, n 만큼의 길이를 1x1 크기의 초콜릿으로 쪼개려면

n-1 만큼 쪼개야합니다.

 

마찬가지로, 세로 길이가 m 이라면 m 만큼의 길이를 1x1 크기의 초콜릿으로 쪼개려면

m-1 만큼 쪼개야겠죠.

 

 

가로 먼저 쪼갠다면, 세로로 쪼개는 횟수는 가로 길이 배 만큼 되어야할 것 입니다.

 

따라서 코드는 이렇게 되겠네요.

 

 

 

[ Code ]

 

 

n,m=map(int, input().split())
print(n-1+(m-1)*n)

 

 

 

하지만 굳이 이렇게 풀지 않아도 됩니다.

가로를 먼저 쪼개도 되고, 세로를 먼저 쪼개도 되거든요,,,

 

 

n-1 + (m-1)*n 을 전개하면

 

nm -1 이 됩니다.

 

마찬가지로

 

m-1 + (n-1)*m 을 전개하면

 

nm-1 이 되기 때문에 코드를 더욱 간단히 하면 아래와 같이 되겠네요.

 

 

 

 

 

n,m=map(int, input().split())
print(n*m-1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형