시에르핀스키 프랙탈
면접 대비시간 제한1초메모리 제한128 MB
깊이 n인 시에르핀스키 삼각형의 윤곽을 ASCII 문자로 그린다. 그림의 높이는 2^n줄이며 각 줄 끝에 공백을 두지 않고 테스트 사이에 빈 줄을 하나 넣는다.
문제
속이 꽉 찬 정삼각형 영역을 생각하자. 이 삼각형을 높이가 절반인 4개의 합동인 작은 정삼각형으로 나눈 뒤, 가운데 삼각형을 제거한다. 남은 3개의 삼각형 각각에 대해 같은 연산을 재귀적으로 반복한다. 이 과정을 무한히 반복하면 넓이가 인 도형이 만들어진다. 이렇게 만들어지는 프랙탈을 시에르핀스키 삼각형(Sierpinski Triangle)이라고 부른다. 이 도형의 위상 차원(topological dimension)은 이지만, 하우스도르프–베시코비치 차원(Hausdorff–Besicovitch dimension)은 로 정수가 아닌 값을 가진다(그래서 프랙탈이라고 부른다). 참고로 노르웨이 해안선의 하우스도르프–베시코비치 차원은 약 이고, 위상 차원은 이다.
이 문제에서는 주어진 재귀 깊이까지의 시에르핀스키 삼각형 윤곽을 ASCII 문자만으로 그려야 한다. 그리는 해상도가 고정되어 있으므로, 재귀 깊이에 따라 그림의 크기를 적절히 키워야 한다. 더 이상 나누지 않는 가장 작은 삼각형은 슬래시(/) 2개, 백슬래시(\) 2개, 밑줄(_) 2개로 다음과 같이 그린다.
/\
/__\
더 큰 삼각형을 그리는 방법은 아래 예제 출력을 참고하라. 깊이가 인 그림은 정확히 개의 행으로 이루어진다. 깊이가 인 삼각형은 깊이가 인 삼각형 3개, 즉 왼쪽 아래, 오른쪽 아래, 그리고 그 위 가운데에 놓인 삼각형으로 구성된다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 정수 하나로 주어진다. 이 입력되면 입력이 끝난다. 그 외에는 이며, 은 재귀 깊이를 나타낸다.
출력
각 테스트 케이스마다 시에르핀스키 삼각형의 윤곽을 출력한다. 그림은 개의 행으로 이루어진다. 출력은 왼쪽으로 정렬하며, 즉 맨 아래 줄의 가장 왼쪽 슬래시를 첫 번째 열에 출력한다. 어떤 줄에도 끝에 공백이 있어서는 안 된다. 서로 다른 테스트 케이스의 그림 사이에는 빈 줄을 하나 출력하되, 마지막 테스트 케이스 뒤에는 빈 줄을 추가로 출력하지 않는다.