반응형
https://www.acmicpc.net/problem/12919
12919번: A와 B 2
수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈
www.acmicpc.net
S = list(input())
T = list(input())
def backtracking(now):
global flag
if now == S:
flag = True
if len(now) > 1:
if now[-1] =='A':
backtracking(now[:-1])
if now[0] == 'B':
backtracking(now[::-1][:-1])
flag = False
backtracking(T)
if flag:
print(1)
else:
print(0)
S
에서 T
를 만드는 것이 아니라 T
에서 S
를 찾아가는 방식으로 문제를 해결하였습니다.
T
에서 S
를 찾아갈 때 backtracking
함수를 작성하여 사용하였습니다.
다음은 backtracking
코드 내부를 확인해보겠습니다.
global flag
로 함수 외부에 있는 flag
변수를 제어하도록 하였습니다.
현재 문자 now
가 S
와 동일하다면 flag
를 True
로 변경해줍니다.
그리고 now
의 길이가 1
보다 작다면 error
가 나오기 때문에 now
의 길이가 1
보다 클 때 라는 조건을 걸어줍니다.아래의 두 조건에 따라 backtrackng()
재귀적으로 호출합니다.
- 현재 문자
now
의 마지막 단어[-1]
가A
일때 :now[:-1]
로A
이전의 문자를 함수로 전달합니다.now
가BABA
라면BAB
를 전달
- 현재 문자
now
의 첫 단어[0]
가B
일때 :now[::-1]
로 뒤집어 주고 마지막 문자 이전의 문자까지 함수로 전달합니다.now
가BAA
라면AA
를 전달
함수가 종료가 되면 flag
에 따라서 알맞은 값을 출력합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 결혼식 파이썬(Python) (0) | 2023.02.18 |
---|---|
[코딩테스트] 백준 유레카 이론 파이썬(python) (0) | 2023.02.17 |
[코딩테스트] 백준 소수인팰린드롬 파이썬(Python) (0) | 2023.02.15 |
[코딩테스트] 프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 MySQL (0) | 2023.02.14 |
[코딩테스트] 프로그래머스 대여기록이 존재하는 자동차 리스트 구하기 MySQL (0) | 2023.02.13 |