<문제 제시>
머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. (종이를 겹쳐서 자를 수 없다.)
<예시 입출력>
<문제 해결 과정>
그림도 주어져있어 어려운 문제이지 않을까 생각했는데, 직접 규칙을 찾아내어 풀어보니 잘 해결할 수 있었다.
이 문제의 포인트는 가로 M 과 세로 N의 적절한 식을 만들면 되는 문제이다.
(M - 1) + (M * (N - 1)) 식이면 원하는 결과를 낼 수 있었다.
가로의 길이보다 한 칸 작게 잘라내게 되고, 세로의 길이보다 한 칸 작게 잘라내게 되지만,
가로의 길이에서 세로만큼 또 반복해주어야하기 때문에 M * (N - 1)이 도출되었다.
<전체코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// #. 종이 자르기
public class cut_paper {
/*
<문제설명>
1. 큰 종이를 1x1로 자르려고 할 때
2. M x N 크기의 종이를 최소로 가위질 해야하는 횟수 구하기
>> Point - (M-1) + (M * (N-1)) 식으로 간단히 도출 가능
*/
public static int solution(int M, int N) {
int answer = 0;
answer = (M-1) + (M * (N-1));
return answer;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 첫번째 변수 입력
System.out.print("입력 = ");
int M = Integer.parseInt(br.readLine());
// 두번째 변수 입력
System.out.print("입력 = ");
int N = Integer.parseInt(br.readLine());
System.out.println(solution(M, N));
}
}
이 문제에서도 BufferedReader로 예제 값들을 받아낸 다음 처리해보았다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120922
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '배열의 평균값' - Java (0) | 2022.12.19 |
---|---|
[프로그래머스] '두 수의 나눗셈' - Java (0) | 2022.12.18 |
[프로그래머스] '배열 자르기' - Java (0) | 2022.12.17 |
[프로그래머스] '잘라서 배열로 저장하기' - Java (0) | 2022.12.17 |
[프로그래머스] '연속된 수의 합' - Java (2) | 2022.12.16 |