Loading...
2022. 9. 26. 02:56

재귀함수를 이용한 순열 구현하기

1. 다중 for문을 이용해 단순히 순열을 생성하기 [1,2,3,4]의 모든 순열을 출력하라하면 어떻게 해야할까? 1부터 4까지 i,j,k,w를 잡고, i가 1부터 4중 하나를 선택하고, j는 i에서 고르지 않은 1부터 4중에 하나 고르고 k는 i,j에서 고르지 않은 1부터 4중 하나를 고르고 w는 i,j,k에서 고르지 않은 나머지 하나를 고르고 for i in range(1,5): for j in range(1,5): if i != j: for k in range(1,5): if k != i and k != j: for w in range(1,5): if w != i and w != j and w != k: print(i,j,k,w) 1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 ..

다이나믹 프로그래밍 정복 -피보나치 변형 몇가지-

1. 문제 17175번: 피보나치는 지겨웡~ (acmicpc.net) 17175번: 피보나치는 지겨웡~ 혁진이는 알고리즘 문제를 만들라는 독촉을 받아 스트레스다. 하지만 피보나치 문제는 너무 많이 봐서 지겹기 그지없다. 그러나 문제를 만들 시간이 없는 혁진이는 피보나치 문제를 응용해서 www.acmicpc.net 피보나치 함수의 호출 횟수를 구하는 문제 2. 풀이 재귀 함수의 호출 횟수를 곧이 곧대로 구하면 풀 수 없다 def fibonacci(n): global cnt cnt += 1 if n < 2: return n return fibonacci(n-2)+fibonacci(n-1) 중간에 cnt를 넣어가지고 cnt를 구하면 함수의 호출횟수가 되는데 n이 조금만 커져도 도저히 시간안에 함수가 끝나질 않..

2022. 8. 25. 03:17

2차원 배열에서 한 행, 한 열 당 숫자 하나씩을 골랐을 때 최소 합으로 만드는 방법

1. 문제 N*N 배열에 숫자가 들어있는데, 각 행에서 하나씩 숫자를 골라 그들의 합이 최소가 되도록 만들고 싶다. 그런데 세로로 같은 줄에 2개 이상의 숫자를 고를 수는 없다. 어떻게하면 합이 최소가 되도록 숫자를 고를 수 있을까? 2. 나의 풀이 어떻게 풀어야할지 도저히 모르겠더라 그래서 천천히 pseudo code를 생각해보았다 2-1)한 행에 0부터 n-1까지에서 숫자를 하나 고른다 2-2)고른 숫자를 더해준다 2-3)행수에 1을 더해서 다음 행으로 이동한다 2-4)이전 행에 고른 열이 아닌 다른 열에서 숫자 하나를 고른다 2-5)고른 숫자를 재귀적으로 반복함 이런식으로 생각해보고 하나하나 천천히 짜보니까 길이 좀 보이긴 하더라 def pick_num(x,y,sum_value): sum_value..

2022. 6. 30. 10:14

DFS/BFS 완전정복을 위한 재귀함수 기본이론

1. 재귀함수 DFS/BFS를 구현하려면 재귀함수도 이해하고 있어야한다 재귀함수는 자기 자신을 다시 호출하는 함수 def recursive_function(): print('재귀 함수를 호출합니다.') recursive_function() recursive_function() 이 코드를 실행하면 '재귀 함수를 호출합니다.'라는 문자열을 무한히 출력한다 정의한 recursive_function()이 자기 자신을 계속해서 추가로 불러오기 때문이다 물론 어느정도 출력하다보면 오류 메시지를 출력한다 재귀의 최대 깊이를 초과했다는 애용으로 파이썬 인터프리터가 호출 횟수의 제한이 있기 때문이다 무한대로 재귀 호출을 할 수는 없으며 애초에 그런 문제 또한 출제될리는 없다 2. 재귀함수 예시 어느 한 컴퓨터공학과 학생..

2021. 11. 26. 01:09

재귀함수 활용하기

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 0과 1로 이루어진 $2^n \times 2^n$ 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구..