minguu987   2년 전

원래 종이가 저장된 배열 : A

자를 때 마다 A를 9등분하여 저장한 배열 : B

로하고, 자른 종이 크기가 1이되거나 자른 종이 안의 숫자가 모두 같다면 그 안의 내용을 리턴하는 방식으로 재귀를 구현해보았습니다.

중간에 k가 나오는 부분을 설명해드리자면 k는 0부터 8까지 총 9번 반복하여 종이를 9등분으로 자르는 역할을 하고, i와 j는 크기를 n//3으로 설정하여 9등분 했을 때의 크기 만큼 반복하도록 (n이 81이라면 자른 종이의 크기는 27이 되어야 하므로 27번씩 반복되도록) 하였습니다.

자른 종이를 

[0, 0], [0, 1], [0, 2]

[1, 0], [1, 1], [1, 2]

[2, 0], [2, 1], [2, 2]  

처럼 표현하기 위해 A배열의 i값에자른종이의 크기(n//3)과 k//3을 곱해 i와 더해주고, j값에 자른 종이의 크기(n//3)과 k%3을 곱해 j와 더해주었습니다. 

(종이크기가 81일 때 : k가 0일때 B배열은 A[0][0]부터 시작, k가 1일 때 A[0][27]부터 시작, k가 2일 때 A[0][54]부터 시작, k가 3일 때 A[27][0]부터 시작...)

질문 게시판의 반례들은 다 확인해 본 것 같은데 틀렸다고 출력되어 반례 부탁드립니다!

댓글을 작성하려면 로그인해야 합니다.