Koala - 17기/코딩테스트 심화 스터디

[백준/Python] 1895번 : 필터

rlawjdgns02 2025. 1. 12. 14:16

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

입력

첫째 줄에 이미지의 크기 R과 C가 주어진다. 그 다음 R개의 각 줄에는 C개의 픽셀 값이 주어진다. 마지막 줄에는 T값이 주어진다.

출력

첫째 줄에 필터링 된 이미지 J의 각 픽셀 값 중에서 T보다 크거나 같은 것의 개수를 출력한다.

 

코드

r, c = map(int, input().split())
cnt = 0
pixel = []
ans = []
for i in range(r):
    pixel.append(list(map(int, input().split())))

t = int(input())

for x in range(r-2):
    for y in range(c-2):
        comp = [pixel[x][y], pixel[x][y+1], pixel[x][y+2], pixel[x+1][y], pixel[x+1][y+1], pixel[x+1][y+2], pixel[x+2][y], pixel[x+2][y+1], pixel[x+2][y+2]]
        comp.sort()
        ans.append(comp[4])

for i in range(len(ans)):
    if ans[i] >= t:
        cnt += 1
        
print(cnt)

풀이 과정

**브루트포스를 통하여 모든 공간을 순회하며 점검**

1. 입력처리 (크기와 픽셀 데이터를 입력받기)

2. 주어진 데이터를 필터 크기인 (3X3)으로 순회하며 중앙값 계산

3. 중앙값을 ans 리스트에 모두 추가한 뒤 모든 요소 중 t (기준값) 보다 큰 개수 카운트