What I Learned/Algorithm Practice
[백준 - python] 4779번: 칸토어 집합
Interrobang
2024. 4. 4. 21:31
문제 링크
4779번: 칸토어 집합
칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고,
www.acmicpc.net
문제 풀이
from sys import stdin
input = stdin.readline
def cantor(n):
if n == 1:
return "-"
cantor_unit = cantor(n // 3)
cantor_res = cantor_unit + " " * (n // 3) + cantor_unit
return cantor_res
while True:
try:
N = int(input())
print(cantor(3**N))
except:
break
*key point: 입력의 경우 계속해서 줄바꿈을 기준으로 입력될 수 있으므로 while 문을 이용한다. 입력받은 정수를 N이라 했을 때 3**N을 매개변수로 넣어 cantor 라는 재귀함수에 넣게끔 했다. 재귀함수 cantor()는 선의 길이가 1일 때 '-' 형태이고, 첫 길이를 n 이라고 하면 계속해서 3등분한 부분 중 가운데만 사라지는 형태 이므로 이를 문자열의 덧셈으로 구현했다.