티스토리 뷰

728x90

https://www.acmicpc.net/problem/13019

 

13019번: A를 B로

첫째 줄에 A, 둘째 줄에 B가 주어진다. 두 문자열의 길이는 같으며, 길이는 50을 넘지 않는다. 또, 알파벳 대문자로만 이루어져 있다.

www.acmicpc.net


  • 문제 : 

문자열 A와 B가 주어진다. 한 번 문자열을 바꾸는 것은 A의 한 글자를 골라서 문자열의 가장 처음으로 옮기는 것을 의미한다.

A를 B로 바꾸기 위해서 문자열을 바꿔야 하는 횟수의 최솟값을 구하는 프로그램을 작성하시오.

 

 

 


  • 풀이 :

우선, 두 문자열이 같은 문자들로 이루어져 있는지 확인하고, 글자수가 2글자 이상인지 확인해준다. 두 조건에 모두 통과한다면 뒤에서부터 다른 문자를 만날 때마다 앞으로 보내주는 작업을 진행하면 된다.

 

 

 


  • 소스코드 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
input = sys.stdin.readline
 
if __name__ == "__main__":
    A = input().strip()
    B = input().strip()
    ans = 0
    if sorted(A) != sorted(B):
        print(-1)
        exit()
    curr = len(A)-1
    if curr == 0 :
        if A == B:
            print(0)
        else:
            print(-1)
        exit()
    for i in range(len(A)-1,-1,-1):
        if A[i] != B[curr]:
            ans += 1
        else:
            curr -= 1
    print(ans)
cs
320x100
댓글
© 2022 WonSeok, All rights reserved