[LeetCode] 463. Island Perimeter (Python3)

호이·2021년 11월 25일
post-thumbnail

요약

DFS, Easy, 주어진 전체 영역은 0이면 물, 1이면 땅이다. 땅의 영역 한 변의 길이가 1일 때 그 둘레를 반환하라.

풀이

풀이

class Solution:
  def islandPerimeter(self, grid: List[List[int]]) -> int:
    cnt = 0; dup = 0
    for i in range(len(grid)):
      for j in range(len(grid[0])):
        if (grid[i][j] == 1):
          cnt += 1
          if (i < len(grid)-1):
            if (grid[i+1][j] == 1):
              dup += 1
          if (j < len(grid[0])-1):
            if (grid[i][j+1] == 1):
              dup += 1
    return (cnt * 4 - dup * 2)
  • 한쪽 방향으로 쭉 탐색하면서 (우측, 아래) 연결된 땅의 개수(*2)를 센 후, 전체 땅의 수(*4)에서 제한다.

주절주절

  • DFS문제긴 한데 그렇게 풀진 않은 듯...? 좋은 풀이는 아니지만 이해하기는 쉽게 짰다는 생각이 든다. 더 열심히 해야 해 T-T
  • 내 풀이를 풀고 그치기보다는 다른 사람의 좋은 풀이를 흡수하는 시간을 좀 더 많이 가져야겠다. 지금 단계에서는 그렇게 안 하면 시간만 드는 것 같다.
profile
매일 부활하는 개복치

0개의 댓글