← 목록

데이터 블록 압축

Lv.3 Python stdin/stdout
문제 설명
## 문제 설명

민서는 숫자로 이루어진 2차원 데이터 표를 압축하려고 합니다.

데이터 표에서 모든 숫자가 같은 정사각형 영역은 하나의 데이터 블록으로 묶어 압축할 수 있습니다.

예를 들어 다음과 같은 데이터 표가 있다고 가정합니다.


1 1 1 2 2
1 1 1 2 2
1 1 1 3 3
4 4 4 4 4


왼쪽 위의 `3 × 3` 영역은 모든 숫자가 `1`이므로 하나의 블록으로 압축할 수 있습니다.

민서의 압축 프로그램이 지원하는 정사각형 블록의 한 변 길이는 정수 리스트 `block_sizes`에 담겨 있습니다.

지원하는 블록 크기 중 데이터 표의 어느 한 곳이라도 모든 값이 같은 정사각형 영역을 만들 수 있는 가장 큰 블록의 한 변 길이를 구하려고 합니다.

지원하는 블록을 하나도 적용할 수 없다면 `-1`을 반환합니다.

정수 리스트 `block_sizes`와 2차원 정수 리스트 `data`가 주어질 때, 적용할 수 있는 가장 큰 정사각형 블록의 한 변 길이를 반환하도록 `solution` 함수를 완성해 주세요.

---

## 제한사항

- `1 ≤ block_sizes의 길이 ≤ 10`
- `1 ≤ block_sizes의 원소 ≤ 20`
- `block_sizes`의 원소는 서로 다릅니다.
- `block_sizes`는 정렬되어 있지 않을 수 있습니다.
- `1 ≤ data의 행 길이 ≤ 50`
- `1 ≤ data의 열 길이 ≤ 50`
- `data`의 모든 행 길이는 같습니다.
- `0 ≤ data[i][j] ≤ 9`
- 블록은 데이터 표의 행과 열에 맞춰 정사각형 형태로 선택합니다.

---

## 입출력 예

block_sizesdataresult
---------:
`[4, 3, 2]``[[1, 1, 1, 2, 2], [1, 1, 1, 2, 2], [1, 1, 1, 3, 3], [4, 4, 4, 4, 4]]``3`
`[3, 2]``[[1, 2], [3, 4]]``-1`
`[1, 3]``[[7]]``1`

---

## 입출력 예 설명

### 입출력 예 #1

데이터 표의 왼쪽 위에는 다음과 같이 모든 값이 `1`인 `3 × 3` 영역이 있습니다.


1 1 1
1 1 1
1 1 1


따라서 크기가 `3`인 블록을 적용할 수 있습니다.

크기가 `4`인 블록으로 만들 수 있는 영역 중 모든 값이 같은 영역은 없으므로 `3`을 반환합니다.

### 입출력 예 #2

크기가 `2`인 영역은 데이터 표 전체뿐이지만, 영역 안의 숫자가 모두 다릅니다.

크기가 `3`인 블록은 데이터 표보다 크기 때문에 적용할 수 없습니다.

따라서 `-1`을 반환합니다.

### 입출력 예 #3

크기가 `1`인 블록은 하나의 데이터만 포함하므로 적용할 수 있습니다.

따라서 `1`을 반환합니다.
솔루션 Python
실행 결과
실행 또는 제출하면 결과가 여기에 표시됩니다.