본문 바로가기
코딩테스트

[백준] 4779 칸토어 집합 - Python

by CuckooBird 2023. 2. 14.

백준 실버3 4779 칸토어 집합 - Python

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

 

4779번: 칸토어 집합

칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고,

www.acmicpc.net


문제


코드

맞았습니다가 뜬 코드입니다.  - 메모리 36788KB | 시간 108ms | 코드 길이 416B

import sys
input = sys.stdin.readline
def cantorSet(n, i, j): # 몇번할지, 시작점, 끝점
    if n == 0:
        return
    # 3등분
    cnt = (j - i + 1) // 3
    # 왼쪽 배열
    cantorSet(n - 1, i, i + cnt - 1)
    # 가운데 배열 공백만들기
    for k in range(i+cnt, i+cnt*2):
        line[k] = ' '
    # 오른쪽 배열
    cantorSet(n-1, i+cnt*2, i+cnt*3-1)
while True:
    try:
        N = int(input())
        line = ['-'] * (3**N)
        cantorSet(N, 0, 3**N-1)
        print(''.join(line))
    except:
        break

Try 1.  내가 짰던 코드

import sys
input = sys.stdin.readline
N = int(input())
line = ['-' for i in range(3**N)]
def cantorSet(n):
    m = n//3
    for i in range(m):
        line[i+m] = ' '
    if m > 1:
        cantorSet(m)
    else:
        return None
cantorSet(3**N)
print(line)
  • 왼쪽 탐색은 되지만 오른쪽 탐색이 되지 않습니다.

Search 🔍

후기

재귀함수는 어렵네용.....