dyl0115   1년 전


채점결과 16%에서 틀렸습니다.가 나왔습니다. 

제 코드에 대한 설명은 다음과 같습니다. 


isSame(arr[][65], int r1, int r3, int c1, int c3) 함수:

arr[r1][c1] 부터 arr[r3][c3]까지 모든 원소들이 같은지 확인하는 함수입니다. 

모든 원소들이 같다면, 1을 출력하고, 

원소가 하나라도 다르다면, 0을 출력합니다.

예를들어,

[[1,1],[1,1]]에서 isSame(arr, 0, 1, 0, 1)은 모든 원소들이 1이므로, 1이 출력됩니다.

[[0,1],[1,1]]에서 isSame(arr, 0, 1, 0, 1)은 0이 하나 끼어 있으므로, 0이 출력됩니다.


QT(arr[][65], int r1, int r3, int c1, int c3) 함수:

arr[r1][c1] 부터 arr[r3][c3]까지의 영역에 대해 재귀를 이용하여 압축한 결과를 출력하는 함수입니다.

1. 만약(r1 == r3)인경우:  배열의 크기가 1인 경우이므로, 그 배열 값 arr[r1][c1]을 출력해줍니다.

2. 만약 isSame(arr, r1, r3, c1, c3) == 1 인경우:  검사하는 배열의 모든 원소값이 같으므로, 그 배열의 모든 원소값을 압축해서 arr[r1][c1]을 출력해줍니다.

3. 만약 isSame(arr, r1, r3, c1, c3) == 0 인경우: 검사하는 배열의 원소값들 중에 다른 값이 있으므로, 다시 더 잘게 4등분(왼위, 오위, 왼아, 오아) 한 뒤, 각각의 영역에 대해서 또 QT(...) 함수를 적용해줍니다.

   3-1. 4등분 하기 위해서 int r2 = (r1+r3) / 2, int c2 = (c1+c3)/2로 r2와 r3를 초기화 해줍니다.

   3-2. 배열을 4등분해서 나온 4영역에 대해서 다음과 같이 또  QT(...)함수를 적용해 주었습니다.

         왼쪽 위: QT(arr, r1,r2,c1,c2) ;

         오른쪽 위: QT(arr, r1, r2, c2+1, c3);

         왼쪽 아래: QT(arr, r2+1, r3, c1, c2);

         오른쪽 아래: QT(arr, r2+1, r3, c2+1, c3);          

   

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