본문 바로가기

Problem Solving/BOJ 백준

[ BOJ 백준 2163번 - 초콜릿 자르기 ] 해설 및 코드

https://www.acmicpc.net/problem/2163

 

2163번: 초콜릿 자르기

정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿을 친구들과 나눠 먹기로 했다. 이를 위해서 정화는 초콜릿을 계속 쪼개서 총 N×M개의 조각으로 쪼개려고 한다. 초콜릿을 쪼갤 때에는 초콜릿 조각을 하나 들고, 적당한 위치에서 초콜릿을 쪼갠다. 초콜릿을 쪼갤 때에는 금이 가 있는 위치에서만 쪼갤 수 있다. 이와

www.acmicpc.net

 

목적

쪼개는 횟수를 최소로하여 1x1 크기로 쪼갠다.

 

접근법

1. 가로로 먼저 쪼개든, 세로로 먼저 쪼개든, 쪼갠 개수에 쪼개진 조각들을 반대 방향으로 쪼갠 개수를 더하자.

1
2
3
4
5
6
7
8
9
#include<iostream>
 
using namespace std;
 
int main(){
    int n,m;cin>>n>>m;
    cout<<(n-1)+n*(m-1);
}