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 | 29 | 30 |
Tags
- GCP
- 그리디
- easy
- github
- mobaXTerm
- 알고리즘
- golang
- 피보나치
- cpu scheduling
- BubbleSort
- Dynamic Programming
- java
- Python
- Top-down
- Backjoon
- Observer Pattern
- docker
- Kotlin
- go
- Singleton Pattern
- k8s
- 백준
- Programmers
- GKE
- 파이썬
- LeetCode
- KAKAO
- kubernetes
- Codility
Archives
- Today
- Total
To Be Developer
[LeetCode] 62. Unique Paths (GoLang, Python) 본문
https://leetcode.com/problems/unique-paths/
[GoLang 풀이]
package main
import "fmt"
type position struct {
x, y int
}
// key는 position Struct, value는 int로 가지는 map 변수
var pathMap map[position]int = make(map[position]int) // make(map[position]int , 선언수)
func main() {
fmt.Println(uniquePaths(7, 3))
}
func uniquePaths(m int, n int) int {
// input 값인 m,n 을 position 타입으로
var pos = position{m, n}
// pathMapw[m,n] 이 0이 아니라면 값이 이미 존재하므로
// 그 값을 바로 return
// 메모리 효율을 위하여
if pathMap[pos] != 0 {
return pathMap[pos]
}
// m, n이 1이라면 pathMap[1,1] 에 1을 대입하고 return 1
if m == 1 && n == 1 {
pathMap[pos] = 1
return 1
} else if m == 1 || n == 1 { // m이나 n 중 하나가 1이면
// pathMap[pos] 에 1을 대입하고 return 1
pathMap[pos] = 1
return 1
}
// pathMap[pos] 는 pos의 왼쪽 값과 위쪽 값을 더한 결과이므로
// 더해준다.
pathMap[pos] = uniquePaths(m-1, n) + uniquePaths(m, n-1)
// pos 좌표의 값을 return 해줌
return pathMap[pos]
}
[Python 풀이]
class Solution(object):
dic = {}
def uniquePaths(self, m, n):
if (m, n) in self.dic:
return self.dic[(m, n)]
if m == 1 and n == 1:
self.dic[(m, n)] = 1
return 1
if m == 1 or n == 1:
self.dic[(m, n)] = 1
return 1
self.dic[(m, n)] = self.uniquePaths(m-1, n) + self.uniquePaths(m, n-1)
return self.dic[(m, n)]
if __name__ == "__main__":
sl = Solution()
print(sl.uniquePaths(120, 120))
print(sl.dic)
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode] 504. Relative Ranks (Python) (0) | 2019.04.21 |
---|---|
[LeetCode] 20. Valid Parentheses (Python) (0) | 2019.04.17 |
[LeetCode] Climbing Stairs (GoLang, Python) (0) | 2019.04.11 |
[LeetCode] 965. Univalued Binary Tree (Python) (0) | 2019.04.08 |
[LeetCode] 509. Fibonacci Number (GoLang, Python) (0) | 2019.04.07 |