디스크 트리
면접 대비시간 제한1초메모리 제한128 MB
전체 디렉터리 경로들이 주어질 때 트리를 복원해 각 디렉터리 이름을 깊이만큼 들여쓰기해 한 줄에 하나씩 출력하고, 같은 부모의 자식들은 ASCII 순서로 정렬합니다.
문제
어느 날 노트북이 갑자기 켜지지 않게 되었습니다. 다행히 그 안에 들어 있던 중요한 디렉터리들의 전체 경로는 미리 텍스트 파일에 따로 저장해 두었습니다. 예를 들면 WINNT\SYSTEM32\CERTSRV\CERTCO~1\X86 과 같은 형식입니다.
중요한 디렉터리들의 전체 경로가 모두 주어질 때, 이 경로들로부터 디렉터리 구조(트리)를 복원하여 보기 좋게 출력하는 프로그램을 작성하세요.
입력
첫째 줄에 중요한 디렉터리 전체 경로의 개수 ()이 주어집니다. 이어지는 개의 줄에 각각 하나의 디렉터리 경로가 주어집니다.
- 각 경로는 공백을 포함하지 않는 한 줄짜리 문자열이며, 길이는 자를 넘지 않습니다.
- 경로에서 디렉터리는 역슬래시
\로 구분됩니다. - 각 디렉터리 이름의 길이는 자 이상 자 이하이며, 알파벳 대문자, 숫자, 특수 문자로 이루어집니다.
- 디렉터리 이름에 쓰일 수 있는 특수 문자는
!#$%&'()-@^_`{}~입니다.
출력
복원한 디렉터리 구조를 다음 규칙에 따라 보기 좋게 출력합니다.
- 한 줄에 디렉터리 이름을 하나씩 출력합니다.
- 각 줄 맨 앞의 공백 개수는 그 디렉터리의 깊이를 나타냅니다. 최상위(루트) 디렉터리는 공백 없이 출력합니다.
- 어떤 디렉터리의 자식 디렉터리는 그 부모보다 공백을 정확히 개 더 붙여서 출력합니다.
- 같은 부모를 가진 자식 디렉터리들은 이름의 사전순(ASCII 문자 코드 오름차순)으로 출력합니다.
힌트
이 이야기는 실화를 재해석한 것으로, 다음 날 아침에 일어나 보니 노트북이 다시 켜졌다고 합니다.