Home [Leetcode][661][Easy] Image Smoother
Post
Cancel

[Leetcode][661][Easy] Image Smoother

문제

661번 문제 링크

매우 쉬운 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

회고

  1. Easy는 쉽지만, 오히려 실생활에 적용할만한 문제도 많다.
  2. Python은 확실히 데이터 처리하는데 편하다.
  3. 경험이 있으며 푸는 속도는 매우 빨라진다.
This post is licensed under CC BY 4.0 by the author.

[Leetcode][2306][Hard] Naming a Company

[AI][Column] 일생으로 비춰본 AI의 빛과 공포