목록전체 글 (601)
sm 기술 블로그
import java.util.*; import java.io.*; class Main { static int fibCnt; static int fib2Cnt; static int[] memo; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); fibCnt = 0; fib2Cnt = 0; memo = new int[100]; fib(n); fib2(n); System.out.println(fibCnt + " " + fib2Cnt); } private static int fib(int n) { if (n == 1 || n == 2) { fibCnt++; return 1; } el..
본 코드는 pypy3로 제출해야합니다. n = int(input()) cntFib = 0 cntFib2 = 0 memo = [0 for i in range(100)] def fib(n): global cntFib if n == 1 or n == 2: cntFib += 1 return 1 else: return fib(n-1)+fib(n-2) def fibonacci(n): global cntFib2 if memo[n] > 0: cntFib2 += 1 return memo[n] if n
동적프로그래밍(Dynamic Programming) 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것 다음과 같이 중복으로 계산하는 것을 줄여줌으로써 조금 더 문제를 빠르게 해결함. 동적프로그래밍 조건 작은 문제가 반복이 일어나는 경우 같은 문제가 반복으로 구해지는 경우 동적프로그래밍 방법 모든 작은 문제들은 한 번만 풀고 어딘가에 메모해 놓는다. 다시 큰 문제를 풀어나갈때 똑같은 작은 문제를 직면하는 경우 메모한 작은 문제의 결과값을 이용한다. (Memoization 메모이제이션) 구현 (파이썬) 1. Botton-Up (아래서 위로) -> 작은 문제부터 구해나감 def fibonacci(n): if n 큰 문제부터 작은 문제로 (재귀함수로 구..
import java.util.*; import java.io.*; class Main { static int N; static int[][] startLink; static boolean[] visited; static ArrayList result; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); startLink = new int[N][N]; result = new ArrayList(); visited = new boolean[N]; for (i..