JAVA/프로그래머스 코딩테스트 입문

[프로그래머스 LV.0] 종이 자르기

sundori 2024. 12. 12. 06:52

문제 설명

머쓱이는 큰 종이를 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
class Solution {
    public int solution(int M, int N) {
        return M * N - 1;
    }
}

 

M x N 종이를 완전히 1 x 1로 만들기 위해 필요한 가위질 횟수는 다음과 같이 계산:

  • 종이를 (M * N)개의 1 x 1 조각으로 나눠야 하므로 최소 (M * N - 1)번의 가위질이 필요.
  • 예) 2 x 2 종이는 4개의 조각으로 나뉘고, 3번의 자르기가 필요.

 

  • M * N - 1 공식 적용:
    • M * N은 최종적으로 필요한 조각 수.
    • -1은 초기 종이(한 덩어리)는 자를 필요가 없기 때문.
  • 제약 조건 처리:
    • 0 < M, N < 100이므로 유효한 입력만 들어온다고 가정.
    • 별도의 검증 코드 없이 간결하게 작성.