
문제를 읽어보면 3^N개의 '-'로 이루어진 문자열을 계속해서 3등분한 후에 그 결과를 출력해야한다
이를 해결하기 위해선 가운데 구간을 삭제하는 함수를 재귀적으로 호출해야한다
대신, 호출할 지점을 잘 정해야하는데 3등분 한 후에 중간을 공백으로 바꾸기 때문에
3등분하는 변수를 하나 정한 뒤에 시작점부터 1/3지점 하나, 2/3지점부터 끝까지 하나를
함수의 인자로 넣고 return 하면 된다 그리고 중간지점은 공백으로 채워주어야한다
이 함수는 길이가 1(즉, '-'하나만 남을때까지)이 되면 return '-'을 해주면 원하는 결과를 얻을 수 있다
def erase(ls):
if len(ls) == 1:
return '-'
standard = len(ls)//3
return erase(ls[:standard]) + ' ' * standard + erase(ls[2*standard:])
while True:
try:
N = int(input())
Cantorian = '-' * (3**N)
print(erase(Cantorian))
except:
break
별도의 입력 종료 조건이 존재하지 않기 때문에 while True와 try, except문을 통하여 실행해주면 된다

'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 11729 하노이 탑 이동 순서(골드 5) - Python (1) | 2024.12.22 |
|---|---|
| [Baekjoon]백준 2447 별 찍기 - 10(골드 5) - Python (1) | 2024.12.21 |
| [Baekjoon]백준 1676 팩토리얼 0의 개수(실버 5) - Python (1) | 2024.12.19 |
| [Baekjoon]백준 2609 최대공약수와 최소공배수(브론즈 1) - Python (0) | 2024.12.18 |
| [Baekjoon]백준 24060 알고리즘 수업 - 병합 정렬 1(실버 3) - Python (0) | 2024.12.17 |