practivceAlgorithm/백준

[백준][Python] 1895 필터

findTheValue 2021. 10. 8. 18:31

중앙값 계속 체크해서 반환.

슬라이딩 윈도우처럼 돌리는건 불가능할까? 사실 세로로 삽입하면 한줄씩은 3개씩 빼고 넣는게 가능할지도?

 

import sys
input = sys.stdin.readline


def check_mid(x, y):
    tmp = []
    for i in range(x, x + 3):
        for j in range(y, y + 3):
            if tmp:
                if tmp[-1] <= filters[i][j]:
                    tmp.append(filters[i][j])
                else:
                    for k in range(len(tmp)):
                        if filters[i][j] < tmp[k]:
                            tmp.insert(k, filters[i][j])
                            break
            else:
                tmp.append(filters[i][j])
    if tmp[4] >= T:
        return True
    return False


R, C = map(int, input().split())
filters = [list(map(int, input().split())) for __ in range(R)]
T = int(input())

cnt = 0
for i in range(R - 2):
    for j in range(C - 2):
        if check_mid(i, j):
            cnt += 1
print(cnt)