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

[백준/Python] 1895번 필터

skdus8784 2022. 7. 7. 10:18

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

[문제 해석]

이 문제는 영상처리 기술에서 사용되는 필터를 이용한 잡음 제거 문제이다.

3x3 크기의 필터만을 발췌하여 해당 필터의 중앙값을 도출해내어 J라는 새로운 필터를 구한다.

그 필터에서 임계값 T보다 크거나 같은 픽셀 수의 개수를 출력하는 문제이다.


[코드]

R, C = map(int, input().split())

Filter = []
for r in range(R) :
    Filter.append(list(map(int,input().split())))

T = int(input())
J = []

for r in range(R-3+1) :
    for c in range(C-3+1) :
        median = []
        for i in range(r, r+3) :
            for j in range(c, c+3) :
                median.append(Filter[i][j])

        median.sort()    
        J.append(median[4])

cnt = 0
for k in J:
    if k > T or k == T :
        cnt += 1

print(cnt)
 

[문제 풀이]

  1. 행과 열에 대해서 입력받는다.
  2. Filter라는 빈 리스트를 생성하여 입력값으로 준 픽셀 값들을 행과 열에 따라 입력받는다.
  3. 임계값 T 역시 입력받는다.
  4. J라는 빈 리스트를 생성하여 중앙값들만을 저장할 준비를 한다.
  5. 3x3크기 만큼의 필터만을 발췌하여 해당 픽셀값 중 중앙값을 찾아 J 리스트에 추가한다.
  6. count를 0으로 초기화하고, J 필터 내에 있는 원소 중 T보다 크거나 같다면 count에 1을 더한다.
  7. 최종적으로 count를 출력한다.

참고자료 : https://yongku.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B0%B1%EC%A4%80-1895%EB%B2%88-%ED%95%84%ED%84%B0-%ED%8C%8C%EC%9D%B4%EC%8D%ACPython

 

[백준 알고리즘] 백준 1895번 필터 파이썬(Python)

츄르사려고 코딩하는 코집사입니다. 1. [백준 알고리즘] 백준 1895번 필터 파이썬(Python) 1) 문제번호 : 1895번 2) 문제 출처 https://www.acmicpc.net/problem/1895 1895번: 필터 숫자 9개가 오름차순이나..

yongku.tistory.com