Algorithm Study

[BOJ] 1780번: 종이의 개수/ JAVA, 재귀

hyun-1200 2022. 4. 25. 00:14

< 실버2 문제> 

 

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

 

1780번: 종이의 개수

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

www.acmicpc.net

 

 

 

Step1. 현재 종이 사이즈 안에서 모든 배열의 값이 같은지 확인 : 여기서는 sameCheck 함수 사용 

          1-1. 같다면, 종이 사이즈 안에서 어떤 값인지 확인 후 ( 1 or -1 or 0 )  갯수 증가시키기.  

                 num1, num2, num3 

 

Step2. 종이를 다시 9등분 해야 하는 함수가 필요

       1-1.  현재 위치가 x,y 일 때 아래의 좌표로 총 9번 나뉘어야 하는데 

              (x,y)              (x,y+div)               (x,y +div*2)

              (x+div, y)      (x+div, y+div)      (x+div, y+div*2) 

              (x+div*2, y)  (x+div*2, y+div)  (x+div, y+div*2) 

        이중 for문을 통해서 각 x,y 좌표를 호출할 수 있게 한다. 

     1-2.  9등분 한 후, Step1 으로 돌아가 모든 배열의 값이 같은 경우, 갯수를 구한다. 

 

 

* 계속해서 갯수를 확인하고, 9등분 나누고, 갯수를 확인하는 작업을 해야하므로 재귀를 사용하였다.