알고리즘/백준 문제풀이

[boj] 백준 12919 A와 B 2 python 풀이

감자156 2023. 8. 14. 09:00
반응형

문제

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

 

12919번: A와 B 2

수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈

www.acmicpc.net

 

문제 풀이

bfs나 dfs로 풀이

bfs, dfs 둘 다 S부터 시작하면 시간초과,, T부터 시작해야 연산횟수를 줄일 수 있다. S부터 시작하면 시간초과임.

방문한 지점을 또 방문하는 경우는 없으니 visited는 처리하지 않아도 된다.

 

코드

1) dfs

import sys
input = sys.stdin.readline

S = input().strip()
T = input().strip()

def dfs(word):
    if word == S:
        print(1)
        exit()
    
    if len(S)>len(word):
        return 
    
    if word[-1] == 'A':
        dfs(word[:-1])
    if word[0] == 'B':
        dfs(word[1:][::-1])

if dfs(T) == None:
      print(0)

 

2) bfs

import sys
input = sys.stdin.readline
import collections

S = input().strip()
T = input().strip()

q = collections.deque()
q.append((T))

while q:
    cur_word = q.popleft()
    if cur_word == S:
        print(1)
        break

    for i in range(2):
        n_word = ''
        if i == 0 and cur_word[-1] == 'A':
            n_word = cur_word[:-1]
        if i == 1 and cur_word[0] == 'B':
            n_word = cur_word[1:][::-1]

        if len(S)<=len(n_word):
            q.append(n_word)

else: print(0)

 

반응형