| 문제 설명 ❓
머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.
| 제한 사항 ❌
- 0 < M, N < 100
- 종이를 겹쳐서 자를 수 없습니다.
| 입출력 예 💬
M | N | result |
2 | 2 | 3 |
2 | 5 | 9 |
1 | 1 | 0 |
| 입출력 예 설명 💬
입출력 예 #1
- 본문과 동일합니다.
입출력 예 #2
- 가로 2 세로 5인 종이는 가로로 1번 세로로 8번 총 가위질 9번이 필요합니다.
입출력 예 #3
- 이미 1 * 1 크기이므로 0을 return 합니다.
| 풀이 🔥
⚠️ 한 번씩 읽어주세요 ⚠️
제 개인의 풀이 방법이며 틀린 풀이 방법 일수도, 더 나은 풀이법이 존재할 수도 있습니다!
전체 코드는 깃헙 링크 혹은 하단 접은 글을 펼쳐 확인가능하며, 복붙이 아닌 참고용 코드입니다
이번 문제에 경우는 매우 쉬웠던거 같습니다. 예시 문제 데이터들만 보았을때 재밌게도 간단한 규칙들이 보입니다.
자른 횟수 : 가로(M) x 세로(N) -1
위 공식과 딱 맞아 떨어집니다. (프로그래머스 설명의 입출력 예시 데이터에도 그대로 적용됨)
따라서 1x1인 경우만 if문으로 처리하고, 외에 경우는 공식을 집어 넣어서 해결하였습니다.
[깃헙 / Github]
😻 댓글과 공감 한 번씩 감사드립니다 😻
| 전체 코드 🔎
더보기
using System;
public class Solution {
public int solution(int M, int N) {
int answer = 0;
// M = 1, N = 1 일경우 자르지 않아도 되므로 0
// 이외에 경우 M * N - 1 번 만큼 가위질을 해야함
if(M == 1 && N == 1)
{
answer = 0;
}
else
{
answer = M * N - 1;
}
return answer;
}
}