아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

칸토어 집합

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 N에 대해 길이 3^N 문자열을 칸토어 집합 규칙으로 출력한다. 크기 3^k 블록의 가운데 1/3은 공백, 나머지는 '-'이다.
난이도

쉬움10점 중 2점

유형
재귀, 구현, 분할 정복, 문자열
정답자
아직 제출이 없습니다

문제

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

전체 집합이 유한하다고 가정하고, 다음 과정을 통해 칸토어 집합의 근사를 만들어 보자.

  1. -(하이픈) 3N3^N개로 이루어진 문자열에서 시작한다.
  2. 문자열을 3등분한 뒤, 가운데 부분을 공백으로 바꾼다. 그러면 선(문자열) 2개가 남는다.
  3. 남은 각 선을 다시 3등분하고 가운데 부분을 공백으로 바꾼다. 이 과정을 모든 선의 길이가 1이 될 때까지 반복한다.

예를 들어 N=3N = 3인 경우, 길이가 27인 문자열에서 시작한다.

---------------------------

가운데 부분을 공백으로 바꾼다.

---------         ---------

남은 두 선의 가운데 부분을 공백으로 바꾼다.

---   ---         ---   ---

한 번 더 반복한다.

- -   - -         - -   - -

모든 선의 길이가 1이 되면 멈춘다. NN이 주어졌을 때, 마지막 과정이 끝난 뒤의 결과를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 줄로 이루어진다. 각 줄에는 정수 NN이 하나씩 주어진다. 입력은 파일의 끝(EOF)에서 끝난다. NN은 0≤N≤120 \le N \le 12인 정수이다.

출력

입력으로 주어진 각 NN에 대해, 해당하는 칸토어 집합의 근사를 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    0
    1
    3
    2
    
    예상 출력
    -
    - -
    - -   - -         - -   - -
    - -   - -
    
  2. 예제 2

    입력
    0
    
    예상 출력
    -
    
  3. 예제 3

    입력
    1
    
    예상 출력
    - -
    
  4. 예제 4

    입력
    2
    
    예상 출력
    - -   - -