TIL

[TIL] 백준 4779 칸토어 집합

밀27 2024. 9. 8. 11:51

문제 : https://www.acmicpc.net/problem/4779

참고 강의 : 인프런 - 세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

 

* 오늘의 학습 키워드 : 재귀함수

 - 함수 내에서 자기 자신을 호출하는 함수를 의미

  • 핵심 개념
    • Base Case(기본 케이스) 와 Recursive Case(재귀 케이스)
      • Base Case : 재귀 함수를 종료하는 부분
      • Recursive Case : 자기 자신을 호출하는 부분

풀이 1 : bottom-up

ans = ['' for _ in range(13)]
ans[0] = '-'

for i in range(1, 13):
	ans[i] = ans[i-1] + (' ' * (3 ** (i-1))) + ans[i-1]

while True:
	try:
		N = int(input())
		print(ans[N])
	except:
		break

풀이 2 : 재귀함수

def func(k):

	#base case
	if k == 0:
		return '-'

	#recursive case
	return func(k-1) + (' ' * (3 ** (k-1))) + func(k-1)


while True:
	try:
		N = int(input())
		print(func(N))
	except:
		break