have a good time 2022. 5. 2. 23:03

시간초과가 날 수 있으니 조심해야 한다.

 

1. 문제 풀이

 

 

1) 문자열 S에서 문자열 T로 바꾸기 

 

문제에 주어진 조건,

- 문자열 뒤에 A 추가

- 문자열 뒤집고 뒤에 B 추가

 

모두 고려해야 한다.

 

2) 문자열 T에서 문자열 S로 바꾸기

 

이 방법은 비교적 쉽다.

 

문제 예제를 생각해보자.

 

B : 문자열 S

ABBA : 문자열 T

 

먼저 S에서 T로 바꾼 후, 

T에서 S로 바꾸는 과정을 살펴보자.

 

 

가. S에서 T로 바꾸기

 

1. 문자열 뒤에 A를 추가한다.

B => BA

 

2. 문자열을 뒤집고 뒤에 B를 추가한다.

BA => ABB

 

3. 문자열 뒤에 A를 추가한다.

ABB => ABBA

 

 

나. T에서 S로 바꾸기 

위의 과정을 거꾸로 하면 된다.

 

1. 문자열 뒤에서 A 제거한다.

ABBA => ABB

 

2. 문자열 뒤에서 B를 제거하고 뒤집는다.

ABB => BA

 

3. 문자열 뒤에서 A를 제거한다.

BA => B

 

그러면 여기서 규칙을 찾을 수 있다.

 

1. 문자열 맨 뒤 글자가 A라면 A를 제거한다. 

2. 문자열 맨 뒤 글자가 B라면 B를 제거한 뒤 문자열을 뒤집는다.

 

따라서 문자열 T에서 S로 바꾸는 과정이 좀 더 간단하다.

위와 같은 방식으로 풀면된다.

 

2. 최종 코드

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static void main(String[] args) throws IOException {
				
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
		String S = br.readLine();
		String T = br.readLine();
		
		while(S.length() < T.length()) {
			
		
			if(T.substring(T.length()-1).equals("A")) {
				T = T.substring(0,T.length()-1);
			
			}else {
				T = T.substring(0,T.length()-1);
				StringBuffer sb = new StringBuffer(T);
				T = sb.reverse().toString();
			
			}
		}
		
		
		if(T.equals(S)) {
			System.out.println(1);
		}else {
			System.out.println(0);
		}		
	 }	
  }

 

참고 블로그 : 

https://velog.io/@hahahaa8642/%EB%B0%B1%EC%A4%80-12904%EB%B2%88-A%EC%99%80-B-JAVA-%ED%92%80%EC%9D%B4

 

[백준] 12904번 A와 B JAVA 풀이

문제 바로가기A를 B로 바꾸는 것보다 B를 A로 만들어가는 문제이다.A를 B로 만들어가려면 2가지 경우에 대해 모두 고려해야하는 반면에 B에서 A로 가는 경우는 끝자리의 문자가 'A'인지 'B'인지에

velog.io