[Lv. 0] 종이 자르기프로그래머스/Level 02023. 3. 21. 13:40
Table of Contents
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120922
난이도 : Level.0
언어 : Kotlin
문제 설명 :
- 머쓱이는 큰 종이를 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 {
fun solution(M: Int, N: Int): Int {
var answer: Int = 0
answer = M * N - 1
return answer
}
}
필요한 것은 1*1을 위해 몇 번의 가위질이 필요한가.
2*6 길이의 종이가 존재할 때, 1*6으로 만들기 위해선 우선 가위질 1번.
1*1로 만들기 위해선 가위질 5번 * 2(앞서 잘라서 생긴 나머지 종이) = 10번.
총 필요한 가위질은 11번.
즉, 1*1로 만들기 위해선 해당 길이의 - 1만큼의 가위질이 필요하다.
이를 수식화 해보면 다음과 같다.
(M - 1) + (M (N - 1)) = 가위질 횟수
M - 1 + MN - M
MN - 1
M * N - 1
'프로그래머스 > Level 0' 카테고리의 다른 글
[Lv. 0] 잘라서 배열로 저장하기 (0) | 2023.03.21 |
---|---|
[Lv. 0] 문자열 밀기 (0) | 2023.03.21 |
[Lv. 0] 옹알이 (1) (0) | 2023.03.21 |
[Lv. 0] 다음에 올 숫자 (0) | 2023.03.21 |
[Lv. 0] 연속된 수의 합 (0) | 2023.03.21 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!