Задача 3: Папка журнала краулера

Напишите определение функции minOperations(logs), которая принимает список строк logs, представляющих операции изменения папок. Функция должна вернуть минимальное количество операций "../", которые необходимо выполнить, чтобы вернуться в главную папку после выполнения всех операций.

Типы операций:

  1. "../" — Перейти в родительскую папку. Если вы уже находитесь в главной папке, то остаётесь в ней.
  2. "./" — Остаться в текущей папке.
  3. "x/" — Перейти в дочернюю папку x (гарантируется, что такая папка существует).

Файловая система начинает работу из главной папки. После выполнения всех операций нужно вернуть минимальное количество операций "../", чтобы вернуться обратно в главную папку.


Примеры

Пример 1:

Ввод:
logs = ["d1/", "d2/", "../", "d21/", "./"]
Вывод:
2

Объяснение:
Необходимо выполнить "../" дважды, чтобы вернуться в главную папку.

Схема выполнения операций:

main/
  └── d1/
        └── d2/    (../ вернёт нас сюда)
        └── d21/

Пример 2:

Ввод:
logs = ["d1/", "d2/", "./", "d3/", "../", "d31/"]
Вывод:
3

Объяснение:
Необходимо выполнить "../" трижды, чтобы вернуться в главную папку.

Схема выполнения операций:

main/
  └── d1/
        └── d2/
              ├── d3/   (../ вернёт нас сюда)
              └── d31/

Пример 3:

Ввод:
logs = ["d1/", "../", "../", "../"]
Вывод:
0

Объяснение:
Мы уже находимся в главной папке, дополнительных операций не требуется.

Схема выполнения операций:

main/
  └── d1/ (../ вернёт нас обратно в main)

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии