PS/백준

[백준/2163번/java] - 초콜릿 자르기

정코딩딩 2024. 3. 14. 23:49

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int N = scan.nextInt();
        int M = scan.nextInt();

        int total = (N-1) + N*(M-1);
        System.out.println(total);
    }
}

 

표를 그릴 때를 생각해보자. 행을 3개 만들고싶으면 줄을 2개만 그리고, 열도 4개를 그리고싶으면 줄을 3개만 그린다.

초콜릿을 자를 때에도 마찬가지다.

예를들어서 3x4 인 초콜릿을 자른다고 가정해보자

두가지 경우가 있을 수 있다 행을 먼저 자르거나 열을 먼저 자르거나

 

행을 먼저 잘라보자! 2번 쪼개면 3개의 조각이 나올거고 열을 마저 3번씩 잘라주면 3개의 조각을 3번씩 잘라주니까 총 9번 잘라야 모든 초콜릿이 1x1 로 잘리게 된다. 이 방식으로 자르면 총 11번 잘라야 함을 알 수 있다.

 

열을 잘라보자! 3번 쪼개면 4개의 조각이 나올거고 행을 마저 2번씩 잘라주면 4개의 조각을 2번씩 잘라주니까 총 8번 잘라야 모든 초콜릿이 잘리게되고 총 11번 잘라야함을 알 수 있다.

 

행을 먼저 자르든 열을 먼저 자르든 동일한 결과임을 알 수 있다. 따라서 처음 자르는 횟수에 쪼개진 조각 * 자르는 횟수를 더해주면 정답이 나오게 된다!