01
Processing Data. Please Wait...

지름길

Other Data Structures 고급
30초 미리보기

지름길

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

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

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

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

  • 루트 디렉토리는 /로 표시됩니다. 즉, 경로가 /로 시작하는 경우 절대경로 입니다.
  • /는 디렉토리를 표시하는 기호입니다. 즉, 경로 /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" 
// 입력된 경로와 동일한 경로