git mv
면접 대비시간 제한1초메모리 제한1024 MB
두 유닉스 경로가 주어질 때, 원본 경로를 목적지 경로로 바꾸는 A{B => C}D 형태의 가장 짧은 문자열을 출력한다.
문제
개발 중에 파일을 한 위치에서 다른 위치로 옮겼다. 버전 관리 도구를 쓰지 않고 개발팀에 이 변경을 짧게 설명하려고 한다.
출발 위치와 도착 위치는 모두 올바른 유닉스 경로 이름이다. 즉, 소문자와 "/"로 이루어진 비어 있지 않은 문자열이며, 처음이나 끝에 "/"가 오지 않고 연속한 슬래시 두 개도 포함하지 않는다.
다음 조건을 만족하는 "A{B => C}D" 형태의 가장 짧은 문자열을 구해야 한다.
- 출발 위치는 "
ABD"이고 도착 위치는 "ACD"이다. 이때 연속한 슬래시 두 개는 슬래시 하나로 읽는다. 예를 들어 파일을 "a/c"에서 "a/b/c"로 옮겼다면 이 이동을 "a/{ => b}/c"로 나타낼 수 있다. 이는 출발 위치가 "a/c"였고 "a//c"가 아니었음을 뜻한다. - 문자열 는 비어 있거나 슬래시로 끝나며, 마찬가지로 는 비어 있거나 슬래시로 시작한다.
- 와 는 모두 슬래시로 시작하지도 끝나지도 않는다.
입력
입력은 다음과 같다.
- 출발 위치가 담긴 한 줄.
- 도착 위치가 담긴 한 줄.
두 줄은 길이가 자 이하이고, 슬래시로 시작하거나 끝나지 않으며, 같은 디렉터리 이름이 두 번 나오지 않는다. 두 문자열은 서로 다름이 보장된다.
출력
위 조건을 만족하면서 출발 위치를 도착 위치로 바꾸는 가장 짧은 치환 문자열을 출력한다.