Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 김태강
- minimum path sum
- 그거봤어?
- Envoy
- 기술적 채무
- 리트코드
- 프로그래머스
- Unique Paths
- BFS
- 리스트의 리스트
- Dynamic Programmin
- Python
- LongestPalindromicSubstring
- 와썹맨
- mysql #numa #swap #memory
- 독후감
- technical debt
- 파이썬
- list of list
- 삼성역량테스트
- 동적 프로그래밍
- 규칙없음
- 아마조니언
- 삼성인 아마조니언 되다
- No Rules Rules
- leetcode
- 알고리즘
- 트리
- 나는 아마존에서 미래를 다녔다
- 블린이
Archives
- Today
- Total
개발자가 되고 싶은 준개발자
[LeetCode] 63. Unique Paths Ⅱ풀이 및 코드 본문
문제
이전 글에서 푼 Unique Paths(https://june-coder.tistory.com/5?category=913762)에 약간의 제약사항이 추가된 문제이다. 이전에는 시작점에서 도착점까지 가능한 경로의 개수를 구하면 되었지만, 이번 문제에서는 지도에 방해물이 추가된다. 따라서 방해물을 지나지 않는 경로의 개수를 세어야 한다.
풀이
문제 자체는 평이했다. 이전 문제를 푼 방법대로, 특정 지점의 윗 칸과 왼쪽 칸의 경로의 개수를 합하면 된다. 이 문제에서는 방해물이 있기 때문에 왼쪽이나 위에 방해물이 있으면 해당 경로로는 오지 못하는 것을 의미하기 때문에 그 경로를 제외한 나머지 경로를 구하면 된다.
그러나 약간 어려웠던 부분은 예외 처리이다. 만약 [[1]]와 같은 입력이 들어온다면 답은 무엇이 되어야 할까? 답은 0이 되어야 한다. 로봇이 갈 수 있는 경로가 없기 때문이다. 만약 [[1, 0]]이 입력이라면? 마찬가지로 0이다. 출발지점이 막혀 있기 때문이다. [[0, 1]]은? 마찬가지로 0이다.
코드
class Solution(object):
def uniquePathsWithObstacles(self, obstacleGrid):
"""
:type obstacleGrid: List[List[int]]
:rtype: int
"""
m, n = len(obstacleGrid), len(obstacleGrid[0])
dp = [[0 for _ in range(n)] for _ in range(m)]
for i in range(m):
for j in range(n):
if obstacleGrid[i][j] == 1:
dp[i][j] = 0
elif i == 0 or j == 0:
if i > 0 and dp[i-1][j] == 0:
dp[i][j] = 0
elif j > 0 and dp[i][j-1] == 0:
dp[i][j] = 0
else:
dp[i][j] = 1
elif obstacleGrid[i-1][j] == 1 or obstacleGrid[i][j-1] == 1:
if obstacleGrid[i-1][j] == 1 and obstacleGrid[i][j-1] == 1:
dp[i][j] = 0
elif obstacleGrid[i-1][j] == 1:
dp[i][j] = dp[i][j-1]
else:
dp[i][j] = dp[i-1][j]
else:
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[m-1][n-1]
리트코드 제출 결과
출처
'알고리즘 공부 > LeetCode' 카테고리의 다른 글
[LeetCode] 101. Symmetric Tree 풀이 및 코드 (1) | 2020.09.26 |
---|---|
[LeetCode] 91. Decode Ways 풀이 및 코드 (0) | 2020.09.20 |
[LeetCode] 64. Minimum Path Sum 풀이 및 코드 (0) | 2020.09.19 |
[LeetCode] 62. Unique Paths 풀이 및 코드 (0) | 2020.09.18 |
[LeetCode] 5. Longest Palindromic Substring 풀이 및 코드 (0) | 2020.09.18 |