[백준] 13019번 A를 B로

거북이·2023년 7월 12일
0

백준[골드4]

목록 보기
25/59
post-thumbnail

💡문제접근

  • 각각의 경우에 대해서 나올 수 있는 결과들을 미리 적어서 확인한 후에 코드를 작성했다.

  • 만약 문자열 A와 문자열 B가 일치하지 않는다면? → 어떤 변화를 주어도 해결할 수 없음(-1)
  • 만약 문자열의 길이가 1 & 문자열 A와 문자열 B가 일치하면? → 0
  • 만약 문자열의 길이가 1 & 문자열 A와 문자열 B가 일치하지 않는다면? → -1
  • 만약 문자열의 길이가 1이 아닌 양수 값인 경우라면?

💡예제 입력

DCABA
DACBA

💡출력

2

①. (A)DCA, (B)DAC 부분 문자열에서 (A)A를 맨 앞으로 가져온다.
(A)ADC, (B)DAC

②. (A)ADC, (B)DAC 부분 문자열에서 (A)D를 맨 앞으로 가져온다.
(A)DAC, (B)DAC

따라서 최솟값은 2가 된다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

A_String = list(input().strip())
B_String = list(input().strip())

A_sort = sorted(A_String)
B_sort = sorted(B_String)

if A_sort != B_sort:
    print(-1)
    sys.exit()

if len(A_String) == 1:
    if str(''.join(map(str, A_sort))) == str(''.join(map(str, B_sort))):
        print(0)
    else:
        print(-1)
else:
    idx = len(A_String) - 1
    cnt = 0
    for i in range(len(A_String) - 1, -1, -1):
        if A_String[i] != B_String[idx]:
            cnt += 1
        else:
            idx -= 1
    print(cnt)

💡소요시간 : 42m

0개의 댓글