07_filesystem.py 781 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/env python3
  2. import sys
  3. from collections import defaultdict
  4. def dirsizes(terminal):
  5. sizes = defaultdict(int)
  6. path = []
  7. def add_to_parent():
  8. curdir = sizes['/'.join(path)]
  9. path.pop()
  10. sizes['/'.join(path)] += curdir
  11. for line in terminal:
  12. if line.startswith('$ cd '):
  13. d = line[5:-1]
  14. if d == '..':
  15. add_to_parent()
  16. elif d != '/':
  17. path.append(d)
  18. elif line[0].isdigit():
  19. sizes['/'.join(path)] += int(line.split()[0])
  20. while path:
  21. add_to_parent()
  22. return sorted(sizes.values())
  23. sizes = dirsizes(sys.stdin)
  24. print(sum(size for size in sizes if size <= 100000))
  25. print(next(size for size in sizes if size >= sizes[-1] - 40000000))