재귀 (5) 썸네일형 리스트형 [BOJ] 백준 4779 칸토어 집합 (Swift) 문제 https://www.acmicpc.net/problem/4779 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 풀이 가운데 문자열을 공백으로 바꿔줄 때, 몇개의 공백이 들어가는지 확인해봅시다. n이 3일 때, 가운데 공백이 $3^2 = 9$개가 들어가게 됩니다. n이 2일 때는 $3^1 = 3$개가 들어가네요. 즉, 공백은 n에 따라서 $3^{n-1} 개$가 들어가네요. 재귀함수로 접근을 해서 풀어줍시다. n이 0이라면 "-"를 return 해줍시다. n이 0보다 크다면, 공백을 $3^{n-1}개 앞.. [BOJ] 백준 2447 별찍기 - 10 (Swift) 문제 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이 이 문제는 재귀를 사용해서 별을 찍는 패턴을 찾아 별을 찍어주는 문제입니다. n이 3일때, 9일때, 27일때를 한번 비교해봅시다. n이 3일때 첫번째 줄에서는 "*"이 3개 두번째 줄에서는 "*" 1개, " " 1개, "*" 1개 세번째 줄은 첫번째 줄과 동일합니다. n이 9일때 9줄을 3등분 해서 확인해봅시다. 1 ~ 3번째 줄은 n이 3일때 찍히는 패턴이 .. [BOJ] 백준 10870 피보나치 수 5 (Swift) 문제 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 피보나치 수는 dp, 재귀함수 등으로 구할 수 있습니다. 최대 n이 20이기 때문에 재귀함수로 구현을 해보겠습니다. 먼저 n이 2보다 작다면 n을 리턴해주면 됩니다. 왜냐하면 0번째 수는 0, 1번째 수는 1이기 때문입니다. n이 2보다 크다면? 피보나치 수를 구하는 함수의 파라미터로 n - 1(전)과 n - 2(전전)을 더해준 값을 리턴해주면 됩.. [BOJ] 백준 10872 팩토리얼 (Swift) 문제 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 팩토리얼을 구하는 방법으로는 for문, 재귀함수 등 으로 구현할 수 있습니다. for문을 사용하면 단순히 1 ~ n 까지 곱해주면 되겠죠? 재귀함수로는 어떻게 풀 수 있을까요? n이 0이나 1일때는 1을 return 해주고 n이 1보다 크다면 n * factorial 함수의 (n - 1)을 호출해주면 되겠죠?? 예를들어 3! 을 구한다고 하면 n이 3이므로 3 * factorial(n: 2) 호출 n이 2이므로 2 * factorial(n: 1) 호출 n이 1이므로 1 return fact.. [BOJ] 백준 16719 ZOAC (Swift) 문제 https://www.acmicpc.net/problem/16719 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 풀이 사전 순으로 가장 앞에 오도록 하는 문자를 선택 해야 하는데, 그렇다면 선택되지 않은 문자중 가장 빠른 문자를 선택해야 할 것 그 이후에는 선택된 문자로부터 오른쪽에 있는 문자를 선택해야 사전 순으로 더 앞설 것임 BAB라는 문자열이 입력으로 주어졌을 때를 예로 들어보자. 밑에 적은 숫자는 index 숫자에요. 맨 처음에는 당연히 A가 선택되겠죠? 왼쪽에 있는 B를 선택했을 때.. 이전 1 다음