문제
매우 쉬운 Matrix 문제이다.
예전에 OpenCV에서 했었던, Grayscale filter와 동일하게 동작한다. 문제는 (n, m) 좌표에 해당 좌표의 값과 그 주변 1칸의 좌푯값들의 평균으로
새 값을 만드는 것이다.
풀이
아주 간단하다.
좌표를 돌면서 Matrix를 벗어난 범위를 제하고 합한 후, 평균을 구하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def imageSmoother(self, img: List[List[int]]) -> List[List[int]]:
def smooth(x, y):
r = 0
cnt = 0
for i in filter(lambda k: 0 <= k < len(img), [x-1, x, x+1]):
for j in filter(lambda k: 0 <= k < len(img[0]), [y-1, y, y+1]):
r += img[i][j]
cnt += 1
return r // cnt
new_img = [[0] * len(img[0]) for x in range(len(img))]
for i in range(len(img)):
for j in range(len(img[0])):
new_img[i][j] = smooth(i, j)
return new_img
회고
- Easy는 쉽지만, 오히려 실생활에 적용할만한 문제도 많다.
- Python은 확실히 데이터 처리하는데 편하다.
- 경험이 있으며 푸는 속도는 매우 빨라진다.