• Quiz
  • Test Cases
  • Solution
  • Solution 1
  • Solution 2
Other Data Structures 고급

지름길

유효한 유닉스 쉘 경로를 나타내는 문자열을 입력 받아 단축된 경로를 반환하는 함수를 작성합니다.

경로는 파일 시스템의 파일 또는 디렉터리 위치를 나타내는 표기입니다.

경로는 파일 시스템의 루트 디렉터리에서 시작되는 절대경로와 현재 디렉터리에서 시작하는 상대경로가 있습니다.

유닉스와 같은 운영 체제에서는 경로에 관한 다음 규칙이 있습니다.

  • 루트 디렉토리는 /로 표시됩니다. 즉, 경로가 /로 시작하는 경우 절대경로 입니다.
  • /는 디렉토리를 표시하는 기호입니다. 즉, 경로 /foo/bar는 루트 디렉토리 아래에 있는 디렉터리 foo 아래의 디렉토리 bar를 나타냅니다.
  • ..는 상위 디렉토리를 나타내는 기호입니다. 즉 /foo/bar/../foo와 같습니다.
  • .는 현재 디렉토리를 나타내는 기호입니다. 즉 /foo/bar/./foo/bar와 같습니다.
  • 기호 /.는 순차적으로 반복될 수 있습니다. 그러나 기호 ..를 반복하는 것은 부모 디렉토리에서 더 올라갈 수 있기 때문에 계속 반복할 수 없습니다. 예를 들어/foo/bar/baz/./././foo/bar/baz와 같은 경로이지만 /foo/bar/baz/../../..//foo/bar/baz는 확실히 다릅니다. 유일한 예외는 루트 디렉토리일 경우인데 /../../../는 서로 같습니다. 왜냐하면 루트 디렉터리는 부모 디렉토리가 없기 때문에 상위 디렉터리에 반복적으로 액세스하는 것이 허용되지 않습니다.

경로의 단축된 버전은 원래 경로와 동일해야 합니다. 다시 말하면, 원본 경로와 동일한 파일 이나 디렉토리를 가리켜야 합니다.

예제 1

입력

path = "/foo/../test/../test/../foo//bar/./baz"

출력

"/foo/bar/baz" 
// 입력된 경로와 동일한 경로

Test Case 1

Input

path = "/foo/../test/../test/../foo//bar/./baz")

Output

"/foo/bar/baz"

Test Case 2

Input

path = "/a/./b/../../c/")

Output

"/c"

Test Case 3

Input

path = "/a/..")

Output

"/"

Test Case 4

Input

path = "/../../../../../a")

Output

"/a"

Test Case 5

Input

path = "/a/./b/./c/./d/")

Output

"/a/b/c/d"
  • My Answer
  • Lecture
  • Output
                                            
W+코딩 알고리즘 강의

프로그래밍을 이해하는데 꼭 필요한 알고리즘을 쉽고 빠르게 배울 수 있도록 준비한 강의 입니다.

코딩테스트를 준비하시는 분, 알고리즘에 대해서 전반적으로 공부하고자 하는 분들을 위해 꼭 필요한 토픽을 모아서 기초부터 고급 문제까지 단계적으로 구성되어 있습니다.

프로그래밍 언어는 JavaScript · Java · Python · C++ · C# 을 이용하여 브라우저에서 직접 프로그램을 작성 및 실행할 수 있으며, 알고리즘 강의를 통해 주어진 문제를 응용하여 다양한 솔루션을 작성하고 온라인에서 바로 테스트하면서, 알고리즘에 대해 좀 더 깊은 이해를 도와 드립니다.

코딩테스트 문제해설

Light Mode

온라인으로 코딩문제 풀면서 학습하는 사이트를 찾고 계신가요? W+코딩에서는 코딩공부 하면서 헷갈리는 부분을 알기 쉽고 정확하게 알려드립니다.

알고리즘 코드해설

Dark Mode

바이너리트리, 링드리스트, 그래프, 다이나믹 프로그래밍, 그리디 등등등... JavaScript, Java, Python, C++, C# 솔루션을 정확하고 알기 쉽게 설명해 드립니다.