아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

deltree

시간 제한1초메모리 제한128 MB

요약
cd와 dir 명령 기록을 바탕으로 마지막 deltree 명령이 반드시 확보하는 최소 디스크 공간을 구합니다.
난이도

보통10점 중 5점

유형
트리, 시뮬레이션
정답자
아직 제출이 없습니다

문제

디스크 공간이 다 떨어져서 디렉터리를 몇 개 지우기로 했다. 무엇을 지울지 정하려면 파일 시스템에 무엇이 들어 있는지부터 살펴봐야 한다. 이 살펴보기는 명령줄 인터페이스에서 한다. 이 문제에서 쓰는 인터페이스의 이름은 MSDOS--이고, MSDOS에서 기능을 덜어낸 것이다. MSDOS--의 명령은 다음과 같다.

  • cd <directory>: <directory>는 현재 디렉터리 아래에 있는 상대 경로다. 현재 디렉터리를 <directory>로 옮긴다. 예를 들어 현재 디렉터리가 \A\B\이고 그 아래에 C\D가 있으면, cd C\D를 실행한 뒤 현재 디렉터리는 \A\B\C\D\가 된다.

  • cd \: 현재 디렉터리를 파일 시스템의 루트인 \로 옮긴다. 예를 들어 현재 디렉터리가 \A\B\일 때 cd \를 실행하면 현재 디렉터리는 \가 된다.

  • cd ..: 현재 디렉터리가 \가 아닐 때, 현재 디렉터리를 부모 디렉터리로 옮긴다. 예를 들어 현재 디렉터리가 \A\B\일 때 cd ..를 실행하면 현재 디렉터리는 \A\가 된다.

  • cd \<directory>: cd \와 cd <directory>를 차례로 실행한 것과 같다.

  • dir: 현재 디렉터리에 바로 들어 있는 파일과 디렉터리의 이름을 한 줄에 하나씩 나열한다. 이름은 영문 대소문자, 숫자, 점(.)으로 이루어진다. 디렉터리가 파일보다 먼저 나오고, 디렉터리는 이름만 한 줄에 적는다. 파일은 이름 뒤에 공백 하나를 두고 크기를 붙여 적는다. dir이 내놓는 목록의 형식은 다음과 같다.

    HW1
    HW1.old
    Syllab.pdf 10000
    notes.txt 3241
    
  • deltree <directory>: <directory>는 현재 디렉터리 아래에 있는 상대 경로다. <directory>와 그 아래의 모든 파일과 하위 디렉터리를 지워서 그만큼 공간을 확보한다. 예를 들어 현재 디렉터리가 \A\B\이고 그 아래에 C\D가 있으면, deltree C\D는 \A\B\C\D\와 그 아래에 있는 것을 모두 지운다.

  • deltree \<directory>: cd \와 deltree <directory>를 차례로 실행한 것과 같다.

  • exit: 명령줄 인터페이스를 끝낸다.

시나리오 하나는 루트에서 시작하는 살펴보기, 즉 서로 어긋나지 않는 cd와 dir 명령의 나열과 그 결과에 deltree 명령 하나가 붙은 것이다. 살펴본 내용만으로는 파일 시스템 전체를 알 수 없다. 아직 dir로 열어 보지 않은 디렉터리는 비어 있을 수도 있다. 시나리오가 주어지면 그 deltree 명령이 확보한다고 보장할 수 있는 공간의 최댓값을 구하라. 이는 살펴본 결과와 어긋나지 않는 모든 파일 시스템에 대해 deltree가 지우는 크기의 최솟값이다.

입력

입력에는 서로 독립인 시나리오가 여럿 들어 있다. 각 시나리오 뒤에는 빈 줄이 하나 온다. 입력은 exit 명령으로 끝난다. 입력에 있는 모든 명령 앞에는 > 기호가 공백 없이 바로 붙어 있고, 명령이 내놓은 결과 줄에는 >가 붙지 않는다. 파일 이름의 길이는 50을 넘지 않는다. 입력은 항상 올바르다.

출력

ii번째 시나리오의 결과를 출력의 ii번째 줄에 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    >cd A
    >dir
    B
    C
    d 12
    e 62
    >cd B
    >cd ..
    >cd ..
    >deltree A
    
    >dir
    G
    s 2
    >cd G
    >dir
    >cd \
    >deltree G
    
    >dir
    A
    B
    x 3
    >cd A
    >dir
    AA
    AB
    ax 10
    ay 12
    >cd AA
    >dir
    d 32
    a 28
    >cd ..
    >cd AB
    >dir
    F
    x 100
    >cd F
    >dir
    G
    >cd \
    >deltree A
    
    >cd D1\D2
    >dir
    D3
    a 32
    >cd D3
    >dir
    b 31
    >cd \D1\D3
    >dir
    d 7
    >deltree \D1
    
    >exit
    
    예상 출력
    74
    0
    182
    70
    
  2. 예제 2

    입력
    >dir
    X
    Y
    a.txt 5
    >cd X
    >dir
    b.txt 40
    Z
    >cd \
    >deltree X
    
    >dir
    X
    Y
    a.txt 5
    >deltree Y
    
    >exit
    
    예상 출력
    40
    0