백준 실버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 🔍
- 다른 분의 코드입니다. 출처: https://dalseoin.tistory.com/entry/%EB%B0%B1%EC%A4%80-%ED%8C%8C%EC%9D%B4%EC%8D%AC-4779-%EC%B9%B8%ED%86%A0%EC%96%B4-%EC%A7%91%ED%95%A9
후기
재귀함수는 어렵네용.....
'코딩테스트' 카테고리의 다른 글
[백준] 1213 팰린드롬 만들기 - Python (3) | 2023.02.15 |
---|---|
[백준] 1951 활자 - Python (3) | 2023.02.15 |
[백준] 5587 카드 캡터 상근이 - Python (0) | 2023.02.13 |
[백준] 1913 달팽이 - Python (2) | 2023.02.12 |
[백준] 1026 보물 - Python (2) | 2023.02.11 |