_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 백준 A 와 B 2 파이썬(Python)
코딩테스트

[코딩테스트] 백준 A 와 B 2 파이썬(Python)

2023. 2. 16. 16:24
반응형

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
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 백준 결혼식 파이썬(Python)
    • [코딩테스트] 백준 유레카 이론 파이썬(python)
    • [코딩테스트] 백준 소수인팰린드롬 파이썬(Python)
    • [코딩테스트] 프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 MySQL
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바