N = 3 에서 N = 4, 5정도까지 직접 옮겨보면 대충 어느 부분에서 재귀를 사용해야 할 지 감이 온다. N = k 일 때 k-1개의 블럭을 2번으로 옮긴 뒤 k번째(가장 큰 블럭) 블럭을 3번으로 옮기고 k-1개의 블럭들을 (3번에 k번째 블럭이 없다고 생각하고) 3번으로 옮겨주면 된다. k-1개의 블럭들을 옮기는 작업이 반복이 되기 때문에, 이 부분을 재귀함수를 이용해서 구현하면 되겠다. 주의해야 할 점은 k의 짝홀수 여부에 따라 옮기는 곳이 다르다는 점이다. 예를 들면, k = 4일 때는 3개를 2로 옮기는데, 3개를 2로 옮길 때는 2개를 2가 아닌 3으로 옮겨야 한다. 그러므로 단순히 Hanoi(N-1, 1, 2)로 쓰는 것이 아니라, 변수를 사용해서 재귀가 호출 될 때 목적지가 달라지게 해..
백준 문제풀이(파이썬)/재귀
기본적인 패턴이 반복이 되는 별 찍기 문제이다. N = 3일때의 기본 형태가 N이 커짐에 따라 반복이 되는 형태이다. 기본 형태는 9개의 별에서 가운데 하나가 빠진 8개로 이루어져있다. NXN크기의 2차원 배열을 0으로 초기화한다. 0은 별이 찍히지 않음을 의미한다. 문양을 만들기 위해서는 기본 형태를 계속해서 찍어주면 되는데 그러기 위해서는 좌표가 필요했다. star함수에는 N과 시작 좌표인 0,0을 전달해 준다. 그리고 N을 3으로 나누어 주면서 다시 호출해주면서 별을 찍어주면 되겠다. N이 계속 호출되며 결국 1이 될 때 좌표에 별을 찍어주면 된다. 그렇다면 어떻게 좌표를 찍어야 할까? 생각보다 간단하다. 좌표는 N이 9라고 가정하면, (0,0) ~ (2,2), (0,3) ~ (2,5), (0,6)..