티스토리 뷰

Problem Solving/BOJ

[BOJ 4779] 칸토어 집합 C++

유자애옹 2021. 7. 20. 22:04

 

 

 

4779번: 칸토어 집합

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

www.acmicpc.net

 

 

문제풀이

 

문자열을 3등분해서 가운데 문자열에 해당하는 부분은 공백으로 바꾼다.

end - start가 1이 되면 종료해주면 된다.

 

 

C++ 코드

 

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string s;
void go(int start, int end)
{
if (end - start == 1) return;
int k = (end - start) / 3;
for (int i = start + k; i < end - k; i++) {
s[i] = ' ';
}
go(start, start + k);
go(end - k, end);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
while (cin >> n) {
int size = pow(3, n);
s.clear();
s.append(size, '-');
go(0, size);
cout << s << '\n';
}
return 0;
}

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ 2470] 두 용액 C++  (0) 2021.07.22
[BOJ 14921] 용액 합성하기 C++  (0) 2021.07.22
[BOJ 4256] 트리 C++/Kotlin  (0) 2021.07.20
[BOJ 2263] 트리의 순회 C++/Kotlin  (0) 2021.07.20
[BOJ 1074] Z C++  (0) 2021.07.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함