[BOJ/C#] 2163 초콜릿 자르기

Algorithm 2023. 1. 29. 00:40
반응형

https://www.acmicpc.net/problem/2163

 

2163번: 초콜릿 자르기

정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿

www.acmicpc.net

N x M 크기의 초콜릿을 1 x M의 크기로 자르려면 N-1번 자르면 됩니다

잘린 1 x M 크기의 조각 N개를 1 x 1 크기로 쪼개려면 각 M-1번씩 쪼개면 됩니다

 

이 둘을 계산하면

(N-1) + N*(M-1)

= MN - N + N - 1

= MN - 1

string[] str = Console.ReadLine().Split();
int n = int.Parse(str[0]);
int m = int.Parse(str[1]);
Console.WriteLine("{0}", (n - 1) + ((m - 1) * n));

 

분할정복으로 풀어보기 

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Numerics;
using System.Text;

namespace BOJ
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
            StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));

            int[] nm = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
            var len = nm[0] * nm[1];
            int[] arr = new int[len];
            divide(arr, 0, arr.Length - 1);
            sw.WriteLine(cnt);
            sr.Close();
            sw.Close();
        }

        private static int cnt;
        static void divide(int[] arr, int left, int right)
        {
            int mid = 0;

            if (right - left < 1) return;

            cnt++;
            
            mid = (left + right) / 2;
            
            divide(arr, left, mid);
            divide(arr, mid+1, right);
        }


    }
}

 

 

 

 

 

반응형

'Algorithm' 카테고리의 다른 글

[BOJ/C#] 10162 전자레인지  (0) 2023.01.31
[프로그래머스] 비밀지도  (0) 2023.01.29
[BOJ/C#] 3009 네 번째 점  (0) 2023.01.28
[BOJ/C#] 2579 계단오르기  (0) 2023.01.28
[BOJ/C#] 15829 Hashing  (0) 2023.01.27
: