https://www.acmicpc.net/problem/12904
풀이
처음에는 s에서 t로 바꾸는 방법을 생각해봤었는데 그렇게 접근할 경우 경우의 수가 2^n으로 너무 많아졌다.
그래서 t에서 s로 접근하는 방법을 생각하였다.
while문 안에서
1. 만약 t의 마지막 글자가 A라면 t = t[:-1]로 두어서 A를 지운다.
2. 만약 t의 마지막 글자가 B라면 t = t[:-1][::-1]로 두어서 B를 지우고 반대로 바꾼다.
이걸 반복하여 s와 t가 동일해진다면 1를 출력하고 아닌 경우 0을 출력하면 된다.
제가 제출한 코드인데 막 짜서 그런지 허접합니다..ㅜㅜ
s = input()
t = input()
check = False
tmp = t
while True:
try:
if t == s:
check = True
break
elif t[-1] == 'A':
t = t[:-1]
elif t[-1] == 'B':
t = t[:-1][::-1]
elif tmp == t:
break
tmp = t
except:
break
if check is True:
print(1)
else:
print(0)
그래서 풀이 후에 다른 사람 코드를 둘러봤는데 이 코드가 깔끔하여 추가로 첨부합니다.
s = list(map(str, input()))
t = list(map(str, input()))
while len(s) != len(t):
if t[-1] == 'A':
t.pop()
elif t[-1] == 'B':
t.pop()
t = t[::-1]
if s == t:
print(1)
else:
print(0)
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11440번 : 피보나치 수의 제곱의 합 (0) | 2022.07.26 |
---|---|
파이썬) 백준 알고리즘 | 10327번 : 피보나치 문제해결전략 (0) | 2022.07.25 |
파이썬) 백준 알고리즘 | 9996번 : 한국이 그리울 땐 서버에 접속하지 (0) | 2022.07.22 |
파이썬) 백준 알고리즘 | 11442번 : 홀수번째 피보나치 수의 합 (0) | 2022.07.22 |
파이썬) 백준 알고리즘 | 1629번 : 곱셈 (0) | 2022.07.10 |
댓글