새소식

PS/백준

[백준/12904] A와 B (Python)

  • -

Problem : https://www.acmicpc.net/problem/12904

 

12904번: A와 B

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

www.acmicpc.net

 

Difficulty : Gold 5

 

Status : Solved

 

Time : 00:02:43

 


 

문제 설명

 

더보기

 

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

이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.

문자열의 뒤에 A를 추가한다.
문자열을 뒤집고 뒤에 B를 추가한다.
주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 

 

 

입력 및 출력

 

더보기

입력

 

첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 999, 2 ≤ T의 길이 ≤ 1000, S의 길이 < T의 길이)

 

출력

 

S를 T로 바꿀 수 있으면 1을 없으면 0을 출력한다.

 

입력 예시

 

B
ABBA

 

출력 예시

 

1

 

 


 

풀이

 

어쩐지 익숙했던 문제. 이미 풀이해 본 경험이 있었다.

 

2023.06.29 - [알고리즘 문제/백준] - [백준/12919] A와 B 2 (Python)

 

[백준/12919] A와 B 2 (Python)

Problem : https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), AB

magentino.tistory.com

 

풀이법까지 완전히 동일하다. S에서 시작해서 완전탐색하기보다는, T에서 시작해서 그리디하게 제거해나가기. 단 조건의 차이가 있는데, S, T의 길이가 본 문제가 훨씬 크다. 즉 탐색 효율성으로 승부해야 한다.

 

풀이 코드

S = input().strip()
T = input().strip()
q = [T]

while q :
  t = q.pop()
  if t == S :
    print(1)
    exit()
  if len(t) == len(S) :
    continue
  if t[-1] == 'A' :
    q.append(t[:-1])
  else :
    q.append(t[:-1][::-1])
print(0)

풀이 완료!

'PS > 백준' 카테고리의 다른 글

[백준/9372] 상근이의 여행 (Python)  (1) 2023.08.29
[백준/13901] 로봇 (Python)  (0) 2023.08.28
[백준/2253] 점프 (Python)  (0) 2023.08.24
[백준/17071] 숨바꼭질 5 (Python)  (0) 2023.08.23
[백준/5670] 휴대폰 자판 (Python)  (0) 2023.08.23
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.