Koala - 10기/코딩테스트 준비 스터디

[백준/Python] #1895 필터

future0610 2023. 3. 12. 23:09

문제

 

https://www.acmicpc.net/problem/1895

 

1895번: 필터

숫자 9개가 오름차순이나 내림차순으로 정렬되어 있을 때, 중앙값은 다섯 번째 숫자이다. 예를 들어, 1, 3, 4, 1, 2, 6, 8, 4, 10의 중앙값은 4이다. (1 ≤ 1 ≤ 2 ≤ 3 ≤ 4 ≤ 4 ≤ 6 ≤ 8 ≤ 10) 이미지 I는

www.acmicpc.net


Algorithm

2차원 배열 A와 3x3 크기의 필터 K에 대해 B의 좌측 상단 부분을 A의 좌측 상단에 맞추고 필터 K를 오른쪽으로 한 칸씩 옮기고 오른쪽으로 더이상 옮길 수 없을 때는 아래로 한 칸 옮기고 아래로도 움직일 수 없을 때까지 같은 과정을 반복한다. 이 과정을 반복하는 동안 K와 A가 겹치는 영역에 해당하는 원소들로 이루어진 list를 만들고 K가 움직이면서 만든 list들의 중앙값들 중 기준값 T보다 크거나 같은 것들의 개수를 출력한다.

 


 

 

Code

import sys

input = sys.stdin.readline

R, C = map(int, input().split())
array = []
for _ in range(R):
    array.append(list(map(int, input().split())))
T = int(input())

ans = 0
for i in range(R - 2):
    rows = array[i : i + 3]
    for j in range(C - 2):
        box = []
        box += rows[0][j : j + 3]
        box += rows[1][j : j + 3]
        box += rows[2][j : j + 3]
        box.sort()
        if box[4] >= T:
            ans += 1

print(ans)