DYNAMIC
Posts
8 posts[c/ c++]1,2,3 더하기-2가지 방법
백준 알고리즘의 1,2,3 더하기 문제이다. dynamic을 이용하여 풀었다.이 문제를 풀땐 점화식을 세우고 그 점화식을 통해 문제를 해결해야한다. N이라는 숫자를 만들려면 N = ? + ? + ? + .... + ? + 1 로 만드는 방법 1. N = N-1 + 1N = ? + ? + ? + .... + ? + 2 로 만드는 방법 2. N = N-2 + 2N = ? + ? + ? + .... + ? + 3 로 만드는 방법 3. N = N-3 + 3 3가지가 존재한다. f(N)을 N으로 만드는 개수라고 할때, f(N) = f(N-1) + f(N-2) + f(N-3)으로 나타낼 수 있다. 다음은 topdown을 이용해서 풀어본 코드. [c++] - topdown123456789101112131415
[c++] 1로 만들기 / dynamic programming topdown
질문 검색1로 만들기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB4470614447947332.491%문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다.예제 입력 1 복사2예제 출력 1 복사1예제 입력 2 복사10예제 출력 2 복사3힌트10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들
[c++]알고리즘 - 동적 계획법(dynamic programming)
동적 계획법은 프로그래밍 대회 문제에 가장 자주 출현하는 디자인 패러다임 중의 하나이다. 동적 계획법은 최적화 문제를 연구하는 수학이론에서 유래하였다. 전산학에서 흔히 쓰이는 dynamic, programming과는 관련이 없어서 혼동 할 수 있으므로 주의를 요한다. 중복을 회피하기 위한 기법 동적 계획법은 큰 의미에서 분할 정복과 같은 접근 방식을 따르게 되는데 동적 계획법또한 divide&conquer방식을 이용해 주어진 문제를 작은 문제로 나눈뒤 답을 구하고 이 답들로부터 본 문제의 답을 구할 수 있다. 다만 분할 정복과 동적 계획법의 차이점으로는 문제를 나누는 방식이다. 문제를 나누게 될때 중복되는 부분이 문제마다 생길수도 안생길 수도 있는데, 데이터가 많아질 수록 중복되는
![[Python] PyCharm에서 임의의 코드를 디버깅하는 방법](https://img.zoomtrend.com/2018/05/08/a0105618_5af183e9edef3.png)
[Python] PyCharm에서 임의의 코드를 디버깅하는 방법
파이썬에서 특정 문자열의 코드를 수행시키려면,exec(...) 빌트인 함수를 이용합니다. 예를 들어, code = """def myrun(): def sum(i, j): return i + j # pdb.set_trace() i = 1 j = 2 k = sum(i, j) print('sum of %s, %s = %s' % (i, j, k))if __name__ == '__main__': myrun()""" 위와 같은 code라는 문자열에 어느 파이썬 코드가 들어가 있다고 하였을 때, exec(code) 라고 실행하면 해당 코드가 실행됩니다. 그런데 이 방법을 이용하면 PyCharm 과 같은 IDE에서 해당 코드를디버깅 할 수 있는 방법이 없

