티스토리 뷰
728x90
https://www.acmicpc.net/problem/13019
- 문제 :
문자열 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
'Algorithm > Greedy' 카테고리의 다른 글
(Python) - BOJ(13413번) : 오셀로 재배치 (0) | 2022.02.09 |
---|---|
(Python) - BOJ(13305번) : 주유소 (0) | 2022.02.09 |
(Python) - BOJ(12927번) : 배수 스위치 (0) | 2022.02.09 |
(Python) - BOJ(11508번) : 2+1 세일 (0) | 2022.02.07 |
(Python) - BOJ(11501번) : 주식 (0) | 2022.02.07 |
댓글
© 2022 WonSeok, All rights reserved