파일 경로로 디렉터리 트리를 만들고, 전체 크기가 t 이상인 디렉터리를 모두 포함하면서 출력하는 디렉터리 수가 최소가 되도록 펼침과 접힘을 정해 출력한다.
보통6트리해시맵DFS그리디면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB텍스트 기반 파일 탐색기의 사용자 인터페이스를 만들고 있다. 맡은 일 중 하나는 디렉터리 계층 구조를 보여 주는 탐색 창을 만드는 것이다. 파일 시스템은 디렉터리로 이루어지고, 디렉터리는 파일과 다른 디렉터리를 담는다. 그 안의 디렉터리가 다시 파일과 디렉터리를 담는 식으로 이어지므로, 디렉터리는 계층적인 트리 구조를 이룬다. 계층에서 가장 위에 있는 디렉터리를 루트 디렉터리라고 부른다. 디렉터리 d가 디렉터리 e를 직접 담고 있으면 d는 e의 부모 디렉터리이고 e는 d의 하위 디렉터리이다. 파일에는 바이트 단위의 크기가 있다. 디렉터리의 크기는 그 디렉터리 안에 직접 또는 간접적으로 들어 있는 모든 파일의 크기를 더한 값이다.
루트 디렉터리를 뺀 모든 파일과 디렉터리에는 이름이 있다. 이름은 항상 소문자 알파벳으로 시작하고, 소문자 알파벳과 마침표(.)로만 이루어진 문자열이다. 같은 부모 디렉터리 바로 아래에 있는 항목(파일과 디렉터리)의 이름은 서로 달라야 한다. 모든 항목은 다음 규칙으로 만드는 경로로 유일하게 나타낼 수 있다.
계층 구조는 루트 디렉터리를 출력해서 보여 준다. 디렉터리 d를 출력한다는 것은 "md pd sd" 꼴의 줄 하나를 쓴다는 뜻이다. 여기서 pd와 sd는 각각 d의 경로와 크기이고, md는 아래에서 설명하는 펼침 표시이다. d가 하위 디렉터리를 담고 있으면 d를 접을지 펼칠지 골라야 한다. 펼치기를 고르면 d의 하위 디렉터리를 모두 이름의 사전순으로, 같은 규칙에 따라 출력한다. 접기를 고르면 d의 내용은 그냥 무시한다.
펼침 표시 md는 d에 하위 디렉터리가 하나도 없으면 공백 문자 하나, d를 접기로 골랐으면 "+", 펼치기로 골랐으면 "-"이다.
파일 목록과 임곗값 정수 t가 주어진다. 크기가 t 이상인 디렉터리가 빠짐없이 출력되게 하면서, 출력하는 디렉터리의 총 개수는 가장 적게 만들어 계층 구조를 보여라. 빈 디렉터리는 없다고 가정하므로 주어진 파일 경로만으로 계층 구조 전체를 알아낼 수 있다. 루트 디렉터리는 크기와 상관없이 반드시 출력한다. 크기가 t 이상인 디렉터리는 출력하기만 하면 되고 반드시 펼쳐야 하는 것은 아니다.
첫째 줄에 파일의 개수 n (1≤n≤1000)이 주어진다. 다음 n개 줄에는 파일 하나의 경로 f와 크기 s (1≤s≤106)가 공백을 사이에 두고 주어진다. 경로의 길이는 100자 이하이고, 위 규칙을 따르는 올바른 파일 경로이다. 모든 경로는 서로 다르다.
그다음 줄에 임곗값 디렉터리 크기 t (1≤t≤109)가 주어진다.
주어진 임곗값에 대해 위에서 설명한, 출력하는 디렉터리 개수가 가장 적은 계층 구조 표시를 출력한다. 각 줄은 펼침 표시, 공백 한 칸, 경로, 공백 한 칸, 크기 순서로 쓴다.