분할정복 3

#1780번 종이의 개수 (C++)

링크 : www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net #2630번 색종이 만들기 (C++)과 유사한 문제다. 다만 범위를 어떻게 축소해나가는지가 관건이다. 문제 풀이는 다음과 같다. 1. 재귀를 통해 1번째 배열부터 마지막번호까지 재귀함수를 진행한다. 2. 만약 지정된 범위의 타일을 모두 세었을 때, -1,0,1 중 한가지로만 도배되었을 경우에 해당 값에 대한 변수를 증가시킨다. 3. 그렇지 않을 경우에 아래와 같이 네 분할로 나누어 다시 재귀..

#1992번 쿼드트리 (C++)

링크 : www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는 www.acmicpc.net 문제를 이해하는데 시간이 다소 소요됐다. 문제 해석은 다음과 같으며, 아래의 그림을 이해하면 된다. 문제 풀이는 다음과 같다. 1. 입력은 숫자가 아닌 문자로 진행된다. 2. 문자를 그대로 받아도 되고, 숫자로 바꿔서 진행해도 된다. 본인은 둘 다 진행했으나, 편의상 문자를 그대로 받아 진행하겠다. 3. 재귀를 통해 1번부터 마지막 번호까지 재귀함수를 진행한다. 4. 지정된 영역의 범위를 ..

#2630번 색종이 만들기 (C++)

링크 : www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 재귀를 통해 풀었으며, 얼핏보면 DFS와 비슷한 원리의 문제이다. 분할정복으로 분류되어있는데, 문제에서 언급되었듯이 정확히 반씩 탐색하면 되는 문제이므로 그리 복잡한 원리를 요구하지 않는다. 문제풀이는 다음과 같다. 1. 재귀를 통해 1번째 배열부터 마지막번호까지 재귀함수를 진행한다. 2. 만약 지정된 범위의 타일을 모두 세었을 때, 하얀 타일이나 파란 타일의 갯수가 0개라면..