반응형
문제
칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다.
전체 집합이 유한이라고 가정하고, 다음과 같은 과정을 통해서 칸토어 집합의 근사를 만들어보자.
1. -가 3N개 있는 문자열에서 시작한다.
2. 문자열을 3등분 한 뒤, 가운데 문자열을 공백으로 바꾼다. 이렇게 하면, 선(문자열) 2개가 남는다.
3. 이제 각 선(문자열)을 3등분 하고, 가운데 문자열을 공백으로 바꾼다. 이 과정은 모든 선의 길이가 1일때 까지 계속 한다.
예를 들어, N=3인 경우, 길이가 27인 문자열로 시작한다.
---------------------------
여기서 가운데 문자열을 공백으로 바꾼다.
--------- ---------
남은 두 선의 가운데 문자열을 공백으로 바꾼다.
--- --- --- ---
한번 더
- - - - - - - -
모든 선의 길이가 1이면 멈춘다. N이 주어졌을 때, 마지막 과정이 끝난 후 결과를 출력하는 프로그램을 작성하시오.
can(n - 1);
for (int i = 0; i < pow(3, n - 1); i++)
printf(" ");
can(n - 1);
}
int main(void)
{
int n;
while (scanf("%d", &n) != EOF)
{
can(n);
printf("\n");
}
}
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[ C / C++ ] 백준 5576 콘테스트 (0) | 2022.04.05 |
---|---|
[ C / C++ ] 백준 5086 배수와 약수 (0) | 2022.04.04 |
[ C / C++ ] 백준 4673 셀프 넘버 (0) | 2022.04.02 |
[ C / C++ ] 백준 2960 에라토스테네스의 체 (0) | 2022.04.01 |
[ C / C++ ] 백준 2942 퍼거슨과 사과 (0) | 2022.03.31 |