파일 시스템
시간 제한1초메모리 제한1024 MB
echo, cp, mv, rm, mkdir, rmdir 명령으로 파일 시스템을 구성한 뒤 각 질의 파일의 내용을 출력합니다. 없는 파일은 invalid!를 출력합니다.
문제
주어진 파일 시스템 명령어와 질의 목록을 처리하여, 각 질의가 요청한 파일의 내용을 출력하라. 질의는 출력할 파일 이름이다. 질의가 유효하지 않으면(예: 경로가 존재하지 않는 경우) invalid!를 출력한다.
다음 명령어를 지원해야 한다.
echo "<content>" > <path>:<content>를<path>파일에 쓴다.<path>가 존재하면 파일이어야 하며, 내용은 교체된다. 존재하지 않으면 부모 디렉터리가 있어야 하며, 파일이 새로 만들어진다.<content>에는 ASCII 숫자, 영문자,*,?,<,>, 공백만 포함된다.cp <source> <destination>: 파일<source>를<destination>에 복사한다.<destination>이 이미 존재하고 디렉터리이면,<source>의 마지막 경로 요소를 이름으로 하여 그 디렉터리 안에 복사한다. 그렇지 않으면<destination>이 새 파일 이름이 되며, 부모 디렉터리가 이미 존재해야 한다. 새 파일은 기존 내용을 대체한다.mv <source> <destination>: 파일 또는 디렉터리<source>를<destination>으로 옮긴다.cp와 같이,<destination>이 이미 존재하고 디렉터리이면<source>의 마지막 경로 요소를 이름으로 하여 그 디렉터리 안으로 옮긴다. 그렇지 않으면<destination>이 새 이름이 되며, 부모 디렉터리가 이미 존재해야 한다. 새 파일은 기존 내용을 대체하고,<source>는 삭제된다.rm <path>: 경로<path>의 파일을 삭제한다.mkdir <path>: 경로<path>에 디렉터리를 만든다. 부모 디렉터리가 이미 존재해야 한다.rmdir <path>: 경로<path>의 빈 디렉터리를 삭제한다.
모든 경로는 숫자, 영문자, /만 포함한다. 경로는 31자를 넘지 않으며, /로 구분된 경로 요소가 7개를 넘지 않는다. 입력의 모든 명령어는 유효하다. 위에서 명시한 경우를 제외하고, 어떤 명령어도 존재하지 않거나 잘못된 경로를 참조하지 않는다. 각 명령어는 1024자 미만이다.
입력
첫 줄에 테스트 케이스 수 T(0 < T < 100)가 주어진다.
각 테스트 케이스는 명령어 수 C(0 < C < 100)가 적힌 줄로 시작한다. 이어지는 C줄에 파일 시스템을 구성하는 명령어가 주어진다. 파일 시스템이 시작되는 폴더는 무시해도 되므로, 현재 디렉터리(./)를 기준으로 생각해도 된다.
다음 줄에는 출력할 파일 이름의 개수 Q(0 < Q < 20)가 주어진다. 이어지는 Q줄에 파일 이름이 주어지며, myfolder/myfile처럼 경로를 포함할 수 있다.
출력
각 질의마다 요청한 파일의 내용을 출력한다. 파일이 없으면 invalid!를 출력한다. 각 테스트 케이스 뒤에는 빈 줄을 출력한다.