[백준][파이썬] 1,2,3 더하기 규칙을 찾는 연습을 잘하자.. 규칙을 논리적으로 찾을 수 있다면 좋다. 하지만 그것이 어려울 경우에는 무조건 숫자를 나열해보면서 찾는 것도 하나의 방법이다. case = int(input()) for _ in range(case): num = int(input()) numlist = [1,2,4] for i in range(3,num): tem = numlist[-1]+numlist[-2]+numlist[-3] numlist.append(tem) print(numlist[num-1]) 2020. 7. 21. [파이썬][알고리즘] 11727 2Xn 타일링 2 num = int(input()) numlist= [3,5] for i in range(2,num-1): tem1 = i-2 tem2 = i-1 tem = 2*numlist[tem1]+numlist[tem2] numlist.append(tem%10007) if num == 2: print(3) elif num == 1: print(1) else: print(numlist[-1]) 규칙을 이해하면 쉽다. 2020. 7. 21. [백준][파이썬] 11726 2Xn 타일링 num = int(input()) numlist= [2,3] for i in range(2,num-1): tem1 = i-2 tem2 = i-1 tem = numlist[tem1]+numlist[tem2] numlist.append(tem%10007) if num == 2: print(2) elif num == 1: print(0) else: print(numlist[-1]) 다이나믹 프로그래밍 문제이다. 피보나치 수열이지만, 문제를 보고 바로 피보나치 수열이라는것을 파악하진 못했다. 결국 다이나믹 프로그래밍 문제는 규칙을 찾는것이 중요하다. 메모리를 아끼려면, 리스트에 저장을 안하고 구해도 괜찮을것 같다. 중요한점은 10007을 매번 나눠주어야 한다는 것이다. num ==1일때 print(1)로 해야한다. 2020. 7. 21. [파이썬]DFS BFS 연습할 기본 코드 def dfs(v): print(v, end=' ') visit[v] = 1 for i in range(1, n + 1): if visit[i] == 0 and s[v][i] == 1: dfs(i) def bfs(v): queue = [v] visit[v] = 0 while (queue): v = queue[0] print(v, end=' ') del queue[0] for i in range(1, n + 1): if visit[i] == 1 and s[v][i] == 1: queue.append(i) visit[i] = 0 n, m, v = map(int, input().split()) s = [[0] * (n + 1) for i in range(n + 1)] visit = [0 for i in ran.. 2020. 3. 29. 이전 1 2 다음