종이 자르기
문제
- 머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다.
- 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
- 정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.
1
function solution(M, N) {}
제한사항
- 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 합니다.
내가 짠 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function solution(M, N) {
let m = M;
let numM = 0;
let numN = 0;
while (M > 1) {
numM += 1;
M--;
}
while (N > 1) {
N--;
numN++;
}
return numM + numN * m;
}
코드 설명
M
이 1이라는 건 종이의 칸이 1이라는 것이기 때문에 1이 될 때까지 -1을 해준다.- -1과 동시에 가위질을 뜻하기 때문에
M
을 자른 횟수를 더한다.
- -1과 동시에 가위질을 뜻하기 때문에
N
도 마찬가지이지만M
의 조각만큼N
을 잘라야 하는 횟수도 늘어나기 떄문에 마지막에M
을 곱한다.M
자체를 1로 만들어주기 때문에M
값을 따로 설정해준다.