미소를뿌리는감자의 코딩

[leetcode 2024/06/22] 71. Simplify Path 본문

카테고리 없음

[leetcode 2024/06/22] 71. Simplify Path

미뿌감 2024. 6. 22. 21:37
728x90

https://leetcode.com/problems/simplify-path/description/?envType=study-plan-v2&envId=top-interview-150

 

 

1. 접근 방법

path 를 읽어나가면서, "/"가 input으로 들어오지 않으면 directories라는 list에 저장해 둔 값들을 append 해주었다.

 

만약 save 한 값들이 ".." 이나 "." 처럼 특수한 경우에는 directories에 저장을 하지 않아주고 그에 맞는 처리들을 해주었다. 

 

마지막으로 save에 값이 저장되어 있고, 마지막으로 "/"를 만나지 않았다면 save에 저장되어 있던 값들을 평가할 수 없기 때문에, 

path에 "/"를 덧붙여주었다

 

이후 directories에 저장되어 있는 directory들을 root 경로로 만들어준 후 반환해 주었다. 

 


 

같이 코딩 테스트하고 있는 친구의 코드를 확인해 보니, 

path.split("/")

'/'.join(directories)

 

이 두 python method를 사용했다면, 더 편리한 코드를 작성할 수 있었을 것 같다.

2. 코드

class Solution:
    def simplifyPath(self, path: str) -> str:
            def findRoot(path):
                save = ""
                for s in path:
                    if s != "/":
                        save += s
                        continue

                    if save == "" or save == ".":
                        save = ""
                        continue

                    if save == "..":
                        if len(directories):
                            directories.pop()
                        save = ""
                        continue

                    directories.append(save)
                    save = ""

                return save

            def finalRoot(directories):
                root = "/"

                for directory in directories:
                    root += directory
                    root += "/"

                if root == "/":
                    return root

                return root[:len(root) - 1]

            directories = []

            findRoot(path+"/")

            return finalRoot(directories)

 

728x90