크기가 n인 정사각형이 제공된다고 가정합니다. n 크기의 정사각형은 n2개의 작은 정사각형으로 더 나뉩니다. 작은 사각형은 단위 크기이며 사각형 중 하나는 고유한 색상으로 채색됩니다.
이제 더 큰 정사각형을 두 개의 동일한 부분으로 자르면 절단선이 고유한 색상의 작은 정사각형과 공통점이 없도록 절단해야 합니다. 새로 자른 두 조각이 서로의 거울상이라는 사실도 고려해야 합니다. 따라서 주어진 조건에서 그런 정사각형을 자르는 것이 가능한지 알아내야 합니다. 우리는 n의 값과 더 큰 사각형에서 색깔이 있는 사각형의 위치를 가지고 있습니다.
따라서 입력이 size =50, color_row_pos =25, colors_col_pos =25와 같으면 출력은 "Cutting is not possible"이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 중간 :=크기 /2의 최소값
- 만약 (중간이 color_row_pos와 같거나 중간이 color_row_pos - 1과 같거나) (중간이 color_col_pos와 같거나 중간이 color_col_pos - 1과 같으면
- 거짓을 반환
- 그렇지 않으면
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(size, colored_row_pos, colored_col_pos) : middle = size // 2 if (middle == colored_row_pos or middle == colored_row_pos - 1) and (middle == colored_col_pos or middle == colored_col_pos - 1) : print("Cutting is not possible") else : print("Cutting is possible") size = 50 colored_row_pos, colored_col_pos = 25, 25 solve(size, colored_row_pos, colored_col_pos)
입력
50, 25, 25
출력
Cutting is not possible