문제
https://www.acmicpc.net/problem/22860
정글에서 알고리즘 Week1 주제 중에 재귀가 있었는데, 재귀 복습도 하고 파이썬에 익숙해지기 위해서 따로 풀어 봤다.
기본적인 전략은 재귀이긴 한데, 주어진 조건에 맞게 파일 구조를 어떻게 구현해 내냐가 중요한 것 같다. 나는 폴더와 파일을 같이 한 폴더에 집어넣어 주는 것처럼 구현을 했는데, 한 폴더 안에 문제의 조건과 똑같이 폴더 파일 나눠서 구현하는 것이 더 효율적일 것 같다.
소스코드
import sys
sys.setrecursionlimit(10**8)
input = sys.stdin.readline
direc = {} #폴더 디렉토리
f_num = 0
def go(target, kinds): #탐색할 함수
global f_num
if target not in direc: #현재 탐색할 주체가 파일이나 폴더가 없다면 종료한다
return
for title, val in direc[target]:
if val == 0:
if title not in kinds: #title은 파일명
kinds.add(title)
f_num += 1
else: #폴더라면 더 탐색해서 들어감
go(title, kinds)
return
N, M = map(int, input().split())
for i in range(N+M):
From, To, Id = input().rstrip().split()
if From not in direc:
direc[From] = []
direc[From].append([To, int(Id)])
else:
direc[From].append([To, int(Id)])
q = int(input())
for i in range(q):
query = input().rstrip().split('/')
SET = set()
f_num = 0
go(query[-1], SET)
print(len(SET), f_num)
'TIL' 카테고리의 다른 글
백준 2617 구슬 찾기(python) (0) | 2021.08.21 |
---|---|
백준 3055 탈출(python) (8) | 2021.08.20 |
백준 1918 후위 표기식(python) (1) | 2021.08.18 |
백준 2812 크게 만들기(python) (0) | 2021.08.16 |
백준 6549 히스토그램에서 가장 큰 사각형(python) (1) | 2021.08.14 |