이 튜토리얼에서는 주어진 경로 리스트에서 가장 긴 공통 디렉터리 경로를 찾는 프로그램을 작성해 보겠습니다. 문제를 더 명확하게 이해하기 위해 먼저 예시를 살펴보겠습니다.
입력 예시
paths = ['home/tutorialspoint/python', 'home/tutorialspoint/c', 'home/tutorialspoint/javascript', 'home/tutorialspoint/react', 'home/tutorialspoint/django']
출력 결과
home/tutorialspoint
위 예시에서 다섯 개의 경로가 모두 공유하는 가장 긴 공통 디렉터리는 'home/tutorialspoint'입니다. Python에서는 os 모듈을 활용하면 이 문제를 아주 간단하게 해결할 수 있습니다.
해결 방법 단계
- os 모듈을 임포트합니다.
- 공통 경로를 찾을 경로 리스트를 초기화합니다.
- os.path.commonprefix(paths) 함수로 모든 경로의 공통 접두사(prefix)를 구합니다.
- os.path.dirname(common_prefix) 함수로 공통 접두사에서 디렉터리 부분만 추출합니다.
전체 코드
# os 모듈 임포트
import os
# 경로 리스트 초기화
paths = ['home/tutorialspoint/python', 'home/tutorialspoint/c', 'home/tutorialspoint/javascript',
'home/tutorialspoint/react', 'home/tutorialspoint/django']
# 모든 경로의 공통 접두사 찾기
common_prefix = os.path.commonprefix(paths)
# 공통 접두사에서 디렉터리 추출
longest_common_directory = os.path.dirname(common_prefix)
# 가장 긴 공통 경로 출력
print(longest_common_directory)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
home/tutorialspoint
마무리
이처럼 os 모듈의 commonprefix와 dirname 함수 두 개만 활용하면 별도의 알고리즘 구현 없이도 가장 긴 공통 디렉터리 경로를 손쉽게 구할 수 있습니다. 참고로 os.path.commonprefix는 문자열 기준으로 동작하기 때문에, 파일명까지 포함된 경로에서 정확한 디렉터리 단위의 공통 경로가 필요하다면 os.path.dirname으로 마지막 요소를 제거하는 과정이 꼭 필요합니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.