dh-winternagi 님의 블로그
(4779) 칸토어 집합 본문
https://www.acmicpc.net/problem/4779
단계별로 풀어보기
19단계(재귀) 5번째
3등분 한 뒤 가운데 문자열을 지우고 양쪽 문자열에 같은 과정을 반복하는 방식을 재귀로 구현하면 된다.

#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
vector<char> v;
auto func= [&](auto self, int l, int r) -> void {
if(l==r) return;
int len= (r-l+1)/3;
self(self, l, l+len-1);
for(int i=l+len;i<r-len+1;i++) v[i]= ' ';
self(self, r-len+1, r);
};
while(cin >> n){
int x= 1;
for(int i=0;i<n;i++) x*= 3;
v= vector<char> (x, '-');
func(func, 0, x-1);
for(int i=0;i<x;i++) cout << v[i];
cout << "\n";
}
return 0;
}'백준 (C++) > Solve' 카테고리의 다른 글
| (11729) 하노이 탑 이동 순서 (0) | 2026.04.17 |
|---|---|
| (2447) 별 찍기 - 10 (0) | 2026.04.17 |
| (24060) 알고리즘 수업 - 병합 정렬 1 (0) | 2026.04.17 |
| (25501) 재귀의 귀재 (0) | 2026.04.17 |
| (10870) 피보나치 수 5 (0) | 2026.04.16 |
