문제 설명
이차원 문자열 배열 relations가 주어집니다. relations의 각 원소는 [부모 디렉토리 이름, 하위 항목 속성, 하위 항목 이름]의 형식으로 이루어져 있으며, 이 중 하위 항목 속성은 "dir"(디렉토리) 또는 "file"(파일) 중 하나입니다.
항상 "root"라는 이름의 루트 디렉토리가 존재하며, 이 루트 디렉토리 하위에 있는 모든 파일들의 이름을 사전순으로 정렬해 반환하는 solution 함수를 작성하시오.
예를 들어, relations가 [["root", "dir", "apple"], ["apple", "file", "banana"], ["durian", "file", "carrot"], ["apple", "dir", "durian"]]과 같이 주어진다면, 해당 디렉토리 구조는 다음과 같습니다.
root
∟ apple (dir)
∟ banana (file)
∟ durian (dir)
∟ carrot (file)
따라서 루트 디렉토리 하위에 있는 모든 파일들의 이름을 사전순으로 정렬하여 [“banana”, “carrot”]을 반환합니다.
제한 사항
-
relations의 길이는 1 이상 10,000 이하입니다. -
루트 디렉토리는 적어도 하나의 하위 항목을 가집니다.
-
부모 디렉토리 이름은 항상"dir"(디렉토리)속성의 항목만 주어집니다. -
하위 항목 이름은 길이 1 이상 10 이하의 문자열이며, 알파벳 소문자(a~z)로만 이루어집니다. -
모든 항목(디렉토리와 파일)의 이름은 중복되지 않습니다.
-
relations의 모든 관계에서 사이클은 존재하지 않습니다.
입출력 예
| 테스트케이스 번호 | relations | return |
|---|---|---|
| 1 | [["root","dir","apple"],["apple","file","banana"],["durian","file","carrot"],["apple","dir","durian"]] | ["banana","carrot"] |
| 2 | [["root","file","readme"]] | ["readme"] |
| 3 | [["root","dir","a"],["b","file","c"],["another","dir","b"]] | [] |
예시 테스트케이스 설명
1번 테스트케이스 설명
-
주어진 디렉토리 구조는 아래와 같습니다. 따라서 루트 디렉토리 하위에는
["banana","carrot"]파일이 존재합니다.root ∟ apple (dir) ∟ banana (file) ∟ durian (dir) ∟ carrot (file)
2번 테스트케이스 설명
-
주어진 디렉토리 구조는 아래와 같습니다. 따라서 루트 디렉토리 하위에는
["readme"]파일이 존재합니다.root ∟ readme (file)
3번 테스트케이스 설명
-
주어진 디렉토리 구조는 아래와 같습니다. 따라서 루트 디렉토리 하위에는 아무 파일도 존재하지 않습니다.
root ∟ a (dir) another ∟ b (dir) ∟ c (file)