-
12904 A와 B백준/그리디 알고리즘 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
'백준 > 그리디 알고리즘' 카테고리의 다른 글
1744 수 묶기 (2) 2024.07.22 1781 컵라면 (0) 2024.07.05 2872 우리집엔 도서관이 있어 (0) 2022.05.02 2839 설탕 배달 (0) 2022.03.10 2437 저울(자바) (0) 2022.02.19