본문 바로가기
Problem Solving

[C++] [백준 2163] 초콜릿 자르기 (pps 5-1)

by tls1107 2021. 7. 18.
728x90
반응형


문제 풀기 전 생각 : 

/*
초콜릿을 최소한의 자르기로 1x1로 자르기 위해선
더 긴 모양이 나오도록 자르고 긴 모양으로 나온것을 쪼개는 것이 
가장 적은 횟수의 자르기로 자를 수 있다.
예를 들어 

*****
*****
*****
*****
의 5x4 초콜릿이 있다고 한다면

***** ***** ***** *****로 나누면 3번의 자르기
그리고 ***** 를 * * * * *로 나누기 위해 4번의 자르기
그리고 ****가 세개 있으니 4번씩 4회 자른 셈이다 
그렇게 총 19번의 자르기로 자를 수 있다

결국 5x4 = 20
20-1 == 19
a * b - 1 가 답이다. 
*/

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

 

2163번: 초콜릿 자르기

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

www.acmicpc.net


#include <iostream>
using namespace std;

int main() { 
  int a,b;
  cin >> a >> b;
  cout << a*b - 1 << endl;
  return 0; 
}

풀 때 어려웠던 점 또는 느낀점 :

접근을 잘못해서 처음에 잠깐 헤매다 

금새 그림을 그려보고 아하! 떠올렸다.


개선방안 :

#include <stdio.h>
int main(){int N, M;scanf("%d %d", &N, &M);printf("%d", N * M - 1);}

같은 접근법이다.

숏코딩 뭔가 재밌어 보인다.

728x90
반응형

댓글