아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

git mv

면접 대비

시간 제한1초메모리 제한1024 MB

요약
두 유닉스 경로가 주어질 때, 원본 경로를 목적지 경로로 바꾸는 A{B => C}D 형태의 가장 짧은 문자열을 출력한다.
난이도

보통10점 중 6점

유형
문자열, 구현, 그리디, 투 포인터
정답자
아직 제출이 없습니다

문제

개발 중에 파일을 한 위치에서 다른 위치로 옮겼다. 버전 관리 도구를 쓰지 않고 개발팀에 이 변경을 짧게 설명하려고 한다.

출발 위치와 도착 위치는 모두 올바른 유닉스 경로 이름이다. 즉, 소문자와 "/"로 이루어진 비어 있지 않은 문자열이며, 처음이나 끝에 "/"가 오지 않고 연속한 슬래시 두 개도 포함하지 않는다.

다음 조건을 만족하는 "A{B => C}D" 형태의 가장 짧은 문자열을 구해야 한다.

  • 출발 위치는 "ABD"이고 도착 위치는 "ACD"이다. 이때 연속한 슬래시 두 개는 슬래시 하나로 읽는다. 예를 들어 파일을 "a/c"에서 "a/b/c"로 옮겼다면 이 이동을 "a/{ => b}/c"로 나타낼 수 있다. 이는 출발 위치가 "a/c"였고 "a//c"가 아니었음을 뜻한다.
  • 문자열 AA는 비어 있거나 슬래시로 끝나며, 마찬가지로 DD는 비어 있거나 슬래시로 시작한다.
  • BB와 CC는 모두 슬래시로 시작하지도 끝나지도 않는다.

입력

입력은 다음과 같다.

  • 출발 위치가 담긴 한 줄.
  • 도착 위치가 담긴 한 줄.

두 줄은 길이가 10610^6자 이하이고, 슬래시로 시작하거나 끝나지 않으며, 같은 디렉터리 이름이 두 번 나오지 않는다. 두 문자열은 서로 다름이 보장된다.

출력

위 조건을 만족하면서 출발 위치를 도착 위치로 바꾸는 가장 짧은 치환 문자열을 출력한다.

예제2

  1. 예제 1

    입력
    www/public/passwords
    private/passwords
    
    예상 출력
    {www/public => private}/passwords
    
  2. 예제 2

    입력
    home/linus/downloads/image
    home/linus/pictures/recent/image
    
    예상 출력
    home/linus/{downloads => pictures/recent}/image