백준 알고리즘 문제/단계별 - 재귀 3

[2447] 별 찍기 - 10 - Java

https://www.acmicpc.net/problem/2447 문제 해석 처음 문제를 봤을 때 이전에 본 적 없던 별 찍기 방식이었다. 입력값 N은 항상 3의 거듭제곱이고 N × N 정사각형에 특정한 패턴을 찍는 문제이다. 특정한 패턴은 크기 3인 정사각형 가운데가 비어있게 별을 찍는 형태로 위와 같은 패턴을 띄고 있다. N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N / 3)×(N / 3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. N이 27인 경우 결과는 다음과 같다. 패턴 문제이기 때문에 27 크기에서 패턴을 찾을 수 있다. N = 3일 때는 가운데 공백을 기준으로 *이 둘러싸여있는 형태라면 N = 27일 때는 N = 9 패턴이 둘러 싸고 있다는 것을 알 수 있다..

[10870] 피보나치 수 5 - Java

https://www.acmicpc.net/problem/10870 문제 해설 재귀 함수 예제에서 팩토리얼과 더불어 많이 나오는 문제이다. 풀이 [8] 캐시 배열 선언. 0은 사용하지 않으므로 1부터 n번까지 쓸 수 있게 n + 1개의 배열 크기로 초기화 [10] n에 0이 입력되면 0 출력 [17 - 29] 피보나치 메서드 [18] n이 1이나 2일 경우 1 반환 [22] 캐시 배열 n번 인덱스의 값이 0이 아니면 n번 인덱스의 값을 출력함 [26] 피보나치 메서드를 호출하고 캐시 배열에 저장 [28] 캐시 배열 n번 인덱스의 값 반환 Memoization 10872번 팩토리얼과 동작 방식이 같다. 그러나 여기서는 조금 다른 방식을 사용했는데 Memoization을 사용했다. 팩토리얼이나 피보나치에서 ..

[10872] 팩토리얼 - Java

https://www.acmicpc.net/problem/10872 문제 해설 재귀 함수 예제의 가장 기본 문제라고 볼 수 있다. 1차 풀이 결과: 틀렸습니다! 분명 올바르게 작성한 것 같은데 틀렸다고 한다. 0! = 1이라는 사실을 간과한 상태로 코딩했다. 최종 풀이 [8] n이 0이면 바로 1을 출력한다. [15 - 20] 팩토리얼 함수 [16] n이 1일 때 1을 리턴한다. [19] 팩토리얼 함수를 다시 호출하는데 이 때 n - 1을 인자로 넘겨준다. 5!을 구한다고 할 때 5! = 5 * 4 * 3 * 2 * 1로 나타낼 수 있다. 여기서 4 * 3 * 2 * 1 = 4!이므로 5! = 5 * 4!로 나타낼 수 있다. 4! = 4 * 3!이 성립하며 3!, 2!, 1! 모두 마찬가지다. 따라서 n..