Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring
- 플로이드와샬
- 투 포인터
- 조합
- 크루스칼
- 최소 신장 트리
- 2020 KAKAO BLIND RECRUITMENT
- 구현
- 시뮬레이션
- BFS
- 백트래킹
- 이분탐색
- 투포인터
- 우선순위큐
- 플로이드 와샬
- 로봇 청소기
- 스택
- 파이썬
- 비트마스킹
- SWEA
- 다익스트라
- 트라이
- 2019 KAKAO BLIND RECRUITMENT
- 2018 KAKAO BLIND RECRUITMENT
- 백준
- 브루트포스
- 2020 카카오 인턴십
- GIT
- 2021 KAKAO BLIND RECRUITMENT
- 프로그래머스
Archives
- Today
- Total
개발조아
[BOJ/백준] 22860 폴더 정리(small) 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/22860
그냥 트리 구조 만들어서 했다.
노드는 이름, 종류, 파일 리스트, 폴더 리스트 4가지로 구성했다.
그리고 folders라는 딕셔너리에 입력으로 주어지는 폴더 정보의 상위 폴더 노드를 저장했다.
main FolderA 1
FolderA File1 0
위의 두개 입력이 온다면
folders[main]과 folders[FolderA]에 노드를 만들어서 넣어줬다.
트리 구조로 했기 때문에 해당 노드로 바로 접근하기 위해 각 노드를 저장했다.
이제 트리를 생성하자.
입력의 상위 폴더가 없다면 상위 폴더 노드를 만들어서 folders에 넣어준다.
그리고 상위 폴더 노드에 파일이면 파일이라면 파일 리스트 이름만 넣고, 폴더라면 folders에서 검색 후 해당 노드를 폴더 리스트에 넣어줬다. 만약 folders에 없다면 노드를 만들어서 저장후 넣어 줬다.
다음 쿼리 실행이다.
쿼리는 주어진 경로의 마지막 폴더 명만 빼서 folders에서 해당 노드로 접근한다.
그리고 그 노드부터 하위 폴더까지 탐색하면서 파일을 가져와서 정답을 도출한다.
from sys import stdin
class Node(object):
def __init__(self,name,typ):
self.name=name
self.type=typ
self.file_list = []
self.folder_list = []
input = stdin.readline
n,m = map(int, input().split())
folders = {}
for _ in range(n+m):
up,name,typ = input().strip().split()
if up not in folders:
node = Node(up,'1')
folders[up] = node
if typ == '0':
folders[up].file_list.append(name)
else:
if name not in folders:
node = Node(name, '1')
folders[name] = node
folders[up].folder_list.append(folders[name])
def solv():
q = int(input())
for _ in range(q):
path = input().strip().split('/')
files = search_folder(path[-1])
print(len(set(files)), len(files))
def search_folder(now):
files = []
for next_folder in folders[now].folder_list:
files += search_folder(next_folder.name)
files += folders[now].file_list
return files
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 22868 산책(small) 파이썬 (0) | 2021.10.06 |
---|---|
[BOJ/백준] 18513 샘터 파이썬 (0) | 2021.10.06 |
[BOJ/백준] 14496 그대, 그머가 되어 파이썬 (0) | 2021.10.04 |
[BOJ/백준] 5214 환승 파이썬 (0) | 2021.10.04 |
[BOJ/백준] 2026 소풍 파이썬 (0) | 2021.09.29 |
Comments