-
2021-02-05] Simplify Path카테고리 없음 2021. 2. 5. 23:54반응형
오늘의 문제:
오늘은 Easy한 문제인 것 같다. linux를 사용하는 개발자라면 당연히 봤을 directory path 문제이다.
예제를 보며 이해해 보자.
입력값으로 string 변수 path가 주어지고, 결과값으로 저 path로 인해 실제 현재의 위치 값을 반환하는 문제이다.
linux system을 사용하지 않는 사람이라면, '..' , '.' 에 대해서 생소할 것이다.
linux에서는 상대적인 경로로 현재 위치를 '.'로 상위 directory 위치를 '..'로 표현한다.
예제 4번을 directory 구조로 표현하면, 아래와 같다.
/
├─a
│ └─b
└─c이후 이동 순서는 / -> /a -> /a ( . ) -> /a/b -> /a -> / -> /c
그래서 답은 '/c' 가 된다. directory를 쌓으면서 '..'를 만나면 마지막에 넣은 directory를 빼면 되서,
stack을 이용하면 좋을 것 같다. 아래 코드로 구현해 보았다.
class Solution: def simplifyPath(self, path: str) -> str: temp=[] # stack for check in path.split('/'): # /를 구분자로 directory 이름을 받는다. if check == "..": # 상위 directory로 가기 위해 pop() 함수 사용 가능 if temp: # stack에 쌓여있을 시 pop() temp.pop() else: # 굳이 필요는 없지만 명시적으로 작성 continue elif check == "." or check=="": # 현재 위치거나, 아무것도 없을때는 continue continue else: # 나머지는 stack에 쌓는다. temp.append('/'+check) if not temp: return '/' return ''.join(temp)
반응형