diff --git "a/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/README.md" "b/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/README.md" new file mode 100644 index 0000000..dd5d905 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/README.md" @@ -0,0 +1,50 @@ +# [Silver IV] 필터 - 1895 + +[문제 링크](https://www.acmicpc.net/problem/1895) + +### 성능 요약 + +메모리: 33240 KB, 시간: 36 ms + +### 분류 + +브루트포스 알고리즘, 구현, 정렬 + +### 제출 일자 + +2024년 6월 18일 19:58:01 + +### 문제 설명 + +
숫자 9개가 오름차순이나 내림차순으로 정렬되어 있을 때, 중앙값은 다섯 번째 숫자이다. 예를 들어, 1, 3, 4, 1, 2, 6, 8, 4, 10의 중앙값은 4이다. (1 ≤ 1 ≤ 2 ≤ 3 ≤ 4 ≤ 4 ≤ 6 ≤ 8 ≤ 10)
+ +이미지 I는 크기가 R × C인 2차원 픽셀이다. (3 ≤ R ≤ 40, 3 ≤ C ≤ 40) 각 픽셀은 어두운 정도 V를 나타낸다. (0 ≤ V ≤ 255)
+ +중앙 필터는 이미지에 있는 노이즈를 제거하는 필터이다. 필터의 크기는 3 × 3이고, 이미지의 중앙값을 찾으면서 잡음을 제거한다.
+ +예를 들어, 아래와 같은 6 × 5 이미지가 있다.
+ + + +필터링된 이미지의 크기는 4 × 3이고, 아래와 같다.
+ + + +가장 왼쪽 윗 행에 필터를 두고, 오른쪽으로 움직이면서 중앙값을 찾는다. 한 행을 모두 이동했으면, 다음 행으로 이동해 다시 중앙값을 찾는다. 아래와 같은 순서를 가진다.
+ + + +위의 그림에서 각각의 중앙값은 36, 36, 21이 된다. 이 값은 필터링된 이미지 J의 첫 행과 같다.
+ +이미지 I가 주어졌을 때, 필터링 된 이미지 J를 구하고, 값이 T보다 크거나 같은 픽셀의 수를 구하는 프로그램을 작성하시오.
+ +예를 들어, T = 40일 때, 위의 예에서 정답은 7이다.
+ +### 입력 + +첫째 줄에 이미지의 크기 R과 C가 주어진다. 그 다음 R개의 각 줄에는 C개의 픽셀 값이 주어진다. 마지막 줄에는 T값이 주어진다.
+ +### 출력 + +첫째 줄에 필터링 된 이미지 J의 각 픽셀 값 중에서 T보다 크거나 같은 것의 개수를 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/\355\225\204\355\204\260.py" "b/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/\355\225\204\355\204\260.py" new file mode 100644 index 0000000..65a2691 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/1895.\342\200\205\355\225\204\355\204\260/\355\225\204\355\204\260.py" @@ -0,0 +1,33 @@ +import sys, math + + +# sys.setrecursionlimit(100000) + + +def input(): + return sys.stdin.readline() + + +def findCenter(x, y): + global cnt + lst = [] + for i in range(x, x + 3): + for j in range(y, y + 3): + lst.append(images[i][j]) + lst.sort() + if lst[4] >= T: + cnt += 1 + + +# main +if __name__ == "__main__": + R, C = map(int, input().split()) + images = [] + for _ in range(R): + images.append(list(map(int, input().split()))) + T = int(input()) + cnt = 0 + for i in range(R - 2): + for j in range(C - 2): + findCenter(i, j) + print(cnt) \ No newline at end of file