📃 coding test/◽ 백준

(백준/c++)1780번 - 종이의 개수

핑크코냥 2022. 1. 18. 22:59
728x90
문제링크: https://www.acmicpc.net/problem/1780
 

1780번: 종이의 개수

N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수

www.acmicpc.net

안녕하세요. 핑크코냥입니다. 

1780번 종이의 개수 문제는 분할정복의 기본적인 틀에서 개수만(?) 조금 늘린 문제입니다. 문제에서 요구하는 것을 간단하게 정리해보면 아래와 같습니다.

1. 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다.
2. (1) 이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각 잘린 종이에 대해서 (1) 의 과정을 반복한다.
3. 입력은 1보다 크고 3의 7승보다 작다.

순서 그대로 구현하면 되는 문제였는데요. 말 그대로 알고리즘을 만들면 1번의 결과가 아닌 경우 9개로 나누어 자신의 함수를 부르는 재귀함수를 실행합니다. 9개의 경우를 다 돌았다면 돌아가야 하니깐 return을 넣어주는 걸 까먹지 마세요.

아래 그림은 코드의 이해도를 높이기 위해 그림을 그려보았습니다. DivideAndConquer 함수를 부르는 순서이니 코드와 비교하면서 보면 무슨 말인지 바로 아실 거 같습니다.

 

728x90