JAVA - 백준 [BAEK JOON]/재귀
[백준] 11729번 : 하노이 탑 이동 순서 - JAVA [자바]
[백준] 11729번 : 하노이 탑 이동 순서 - JAVA [자바]
2020.05.16www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 백준 단계별로 풀어보기의 재귀 문제 중 마지막 문제다. 알고리즘 [접근 방법] 이전의 재귀 문제를 그동안 풀어봤다면 이번 문제는 그리 어렵지 않은 문제다. 직전 문제인 별찍기 10 에서도 볼 수 있듯이 재귀를 통해 '가장 작은 단위' 가 될 때 까지 재귀호출을 하고, 가장 작은 단위까지 호출이 되었으면, 거기서 구현한 연산을 실행하면 된다. 이 문제도 같은 원리다. 하노이탑 개수와 상관없이, ..
[백준] 2447번 : 별 찍기 - 10 - JAVA [자바]
[백준] 2447번 : 별 찍기 - 10 - JAVA [자바]
2020.05.16www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 � www.acmicpc.net 문제 알고리즘 [접근 방법] 필자가 이 문제를 푼 것은 좀 오래전이지만 근래 작성한 문제 중에 가장 설명하기 어려운 문제였다. 어떻게 설명해야하는지 고민을 좀 많이 했던지라.. 또한 규칙은 쉽게 보이지만 이를 구현하자니 필자도 꽤 고민했던 문제이기도 했다. (근데 정답률이 어떻게 50% 가까이 되는지 정말 신기하다.. 막상 질문하는 사람은 많은데..?) 여하튼 차근차근 한 번 풀어..
[백준] 10870번 : 피보나치 수 5 - JAVA [자바]
[백준] 10870번 : 피보나치 수 5 - JAVA [자바]
2020.05.13www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 �� www.acmicpc.net 문제 재귀에 대한 이해만 있다면 매우 간단한 문제다! 물론 재귀함수를 쓰지 않고 배열로도 가능하니 한 번 같이 보자. 알고리즘 [접근 방법] 이 문제의 경우에는 사실 문제설명에서 다 주었다. 피보나치 수 부터 설명을 하자면 첫번째 항이 0 부터 시작할 경우 첫번째 항은 0, 두번째 항은 1부터 시작하여, 다음 항은 직전 항과 직전 항의 직전 항의 합으로 이루어진 수열을..
[백준] 10872번 : 팩토리얼 - JAVA [자바]
[백준] 10872번 : 팩토리얼 - JAVA [자바]
2020.05.11www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 재귀에 대한 문제를 처음 접할 때 가장 먼저 접하는 문제중 하나가 아닐까 싶다. 매우 쉬운 문제이니 어렵지 않게 풀 수 있을 것이다. 알고리즘 [재귀] 재귀를 프로그래밍으로 처음 접하는 분들은 수학적으로는 익숙하더라도 코딩에서는 매우 생소할 수도 있다. 컴퓨터에서 재귀는 자신을 정의할 때 자기 자신을 재 참조하는 방법을 재귀라고 한다. 그림으로 보면 아주 간단하게 아래와 같다. 이런식으로 func 이라는 함수를 정의할 때, func 함수 안에 func 을 호출하고 그 호출 한 func 안에 func 을 참조하..