두 개의 문자열이 있다고 가정합니다. 우리는 그 문자열에서 어휘적으로 최소 문자열을 만들고 싶습니다. 문자열을 만들기 위해 두 문자열의 첫 번째 문자를 비교하고 문자열 중 하나에서 어휘적으로 더 작은 문자를 추출합니다. 넥타이의 경우 문자는 동일합니다. 첫 번째 문자열에서 문자를 추출합니다. 두 문자열이 모두 비어 있을 때까지 이 프로세스를 반복합니다. 생성된 최소 문자열이 반환되어야 합니다.
따라서 입력이 input_1 ='TUTORIALS', input_2 ='POINT'인 경우 출력은 POINTTUTORIALS
가 됩니다.두 문자열을 비교하면 다음을 단계별로 얻습니다.
TUTORIALS POINT TUTORIALS OINT = P TUTORIALS INT = PO TUTORIALS NT = POI TUTORIALS T = POIN TUTORIALS = POINT
문자열 중 하나가 비어 있으므로 이제 전체 첫 번째 문자열이 결과 최소 문자열에 배치됩니다. 따라서 최종 문자열은 POINTTUTORIALS입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 입력_1 :=입력_1 + "z"
- 입력_2 :=입력_2 + "z"
- temp_1 :=0
- temp_2 :=0
- res_str :=빈 문자열
- temp_1
- input_1[인덱스 temp_1에서 문자열 끝까지]
- res_str :=res_str + input_1[temp_1]
- temp_1 :=temp_1 + 1
- input_1[인덱스 temp_1에서 문자열 끝까지]
- res_str :=res_str + input_2[temp_2]
- temp_2 :=temp_2 + 1
- res_str :=res_str + input_1[인덱스 temp_1에서 문자열의 두 번째 마지막 요소까지]
- res_str :=res_str + input_2[인덱스 temp_2에서 문자열의 두 번째 마지막 요소까지]
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(input_1, input_2): input_1 += "z" input_2 += "z" temp_1 = 0 temp_2 = 0 res_str = "" while temp_1 < len(input_1) and temp_2 < len(input_2): if input_1[temp_1:] < input_2[temp_2:]: res_str += input_1[temp_1] temp_1 += 1 else: res_str += input_2[temp_2] temp_2 += 1 res_str = res_str[:-1] if temp_1 < len(input_1): res_str += input_1[temp_1:-1] if temp_2 < len(input_2): res_str += input_2[temp_2:-1] return res_str print(solve('TUTORIALS', 'POINT'))
입력
'TUTORIALS', 'POINT'
출력
POINTTUTORIALS