본문 바로가기

알고리즘/문자열 처리

자바 | 백준 | 12904 | A와 B | 문자열 뒤집기

1. 다 해보기

문자열 뒤집는 방법

StringBuilder의 reverse 이용

import java.io.*;
import java.util.*;

public class Main {

	static String S, T;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		S = br.readLine();
		T = br.readLine();
	
		dfs(S);
		System.out.println(0);
	}

	static void dfs(String str) {
		if (str.length()==T.length()) {
			if (str.equals(T)) {
				System.out.println(1);
				System.exit(0);
			}
			return;
		}
		dfs(str+"A");
		dfs(reverse(str)+"B");
		
	}
	
	static String reverse(String s) {
		return (new StringBuilder(s).reverse().toString());
	}
}

시간초과

 

2. 

T→S 만든다.

A로 끝나면 1번 방법 쓴 거

B로 끝나면 2번 방법 쓴 거

import java.io.*;
import java.util.*;

public class Main {

	static String S, T;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		S = br.readLine();
		T = br.readLine();

		List<Character> charListT = new ArrayList<Character>();
		for (int i = 0; i < T.length(); i++) {
			charListT.add(T.charAt(i));
		}

		// T의 길이가 S의 길이보다 길 때까지
		int index = charListT.size() - 1;
		while (charListT.size() > S.length()) {
			if (charListT.get(index) == 'A') {
				charListT.remove(index);
			} else {
				charListT.remove(index);
				charListT = reverse(charListT);
			}
			index--;
		}
		// 같은지 아닌지 확인
		for (int i = 0; i < S.length(); i++) {
			if (S.charAt(i) != charListT.get(i).charValue()) {
				System.out.println(0);
				System.exit(0);
			}
		}
		System.out.println(1);
	}

	static List<Character> reverse(List<Character> list) {
		List<Character> result = new ArrayList<Character>();
		int index = list.size() - 1;
		while (index >= 0) {
			result.add(list.get(index--));
		}
		return result;
	}
}

 

 

www.acmicpc.net/problem/12904

 

12904번: A와 B

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

www.acmicpc.net