2021/02 3

leetcode 509, 1137(피보나치), 746(계단, dp), 698(dfs)

509 leetcode.com/problems/fibonacci-number/ 알고리즘 공부 시작하는 처음에 가장 먼저 배우는 쉬운거 class Solution(object): def fib(self, n): if n == 0: return 0 f = [0] * (n+1) f[1] = 1 for i in xrange(2, n + 1): f[i] = f[i-1] + f[i-2] return f[n] 복습용으로 읽어보는게 더 좋다 : leetcode.com/problems/fibonacci-number/discuss/215992/Java-Solutions 1137 leetcode.com/problems/n-th-tribonacci-number/ 위랑 똑같음. class Solution(object): def..

leetcode 1041(구현), 96(이진트리 dp)

1041 https://leetcode.com/problems/robot-bounded-in-circle/ 명령어들을 반복했을때 로봇의 이동경로가 서클을 이루는지를 판별하는 문제이다. 오랫만에 푸느라 그런지 어떻게 풀어야 할지 감이 안잡혔는데... discussion을 보니 1. 명령을 다 실행하고 0,0으로 되돌아오면 서클을 이룸. 2. 또는 명령을 다 실행했는데 이동 방향이 북쪽이 아니면 명령을 반복하면 다시 처음으로 되돌아옴. 이라고 한다. 2번을 떠올리려면 직관력이 뛰어놔야 할듯 싶다. 명령이 다 끝났는데도 0,0이 아니고 이동 방향이 북쪽이면 위로만 계속 올라가게되니 아닌거고, 다 끝나고 방향이 왼쪽이면 시계 반대방향으로 돌면서 0,0으로 돌아오고, 오른쪽이면 시계 방향으로 돌면서 0,0으로 오..