Programers 3장 - Lv.0 종이 자르기
포스트
취소

Programers 3장 - Lv.0 종이 자르기

종이 자르기

문제

  • 머쓱이는 큰 종이를 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
  • 종이를 겹쳐서 자를 수 없습니다.

입출력 예시

MNresult
223
259
110

입출력 예 설명

  • 입출력 예 #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을 자른 횟수를 더한다.
  • N도 마찬가지이지만 M의 조각만큼 N을 잘라야 하는 횟수도 늘어나기 떄문에 마지막에 M을 곱한다.
    • M자체를 1로 만들어주기 때문에 M값을 따로 설정해준다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.