Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

dh-winternagi 님의 블로그

(4779) 칸토어 집합 본문

백준 (C++)/Solve

(4779) 칸토어 집합

dh-winternagi 2026. 4. 17. 08:10

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