프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
머쓱이는 큰 종이를 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 합니다.
코드
class Solution {
fun solution(M: Int, N: Int): Int {
return (M * N) - 1
}
}
풀이
- 가로 절단
- 가로 방향으로 M 을 1 로 만들기 위해서는 M - 1 번 자르면 된다.
- 세로 절단
- 세로 방향으로 N 을 1 로 만들기 위해서는 N - 1 번 자르면 된다.
- 이때, 세로 절단은 현재 존재하는 모든 가로로 나누어진 직사격형에 대해 적용된다.
- 즉, 가로를 M - 1 번 자르고 나면 M 개의 1 x N 직사각형이 생긴다.
- 이때 각 직사각형의 세로를 1 로 만들기 위해서는 각 직사각형에 대해 N - 1 번 자른다.
- 따라서 총 절단 횟수는 M * (N - 1) 번이 된다.

프로그래머스 | 종이 자르기 [파이썬 python]
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def
dduniverse.tistory.com
'프로그래머스' 카테고리의 다른 글
[프로그래머스][Kotlin] 겹치는 선분의 길이 (0) | 2024.08.06 |
---|---|
[프로그래머스][Kotlin] 유한소수 판별하기 (0) | 2024.08.06 |
[프로그래머스][Kotlin] 연속된 수의 합 (0) | 2024.08.01 |