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;
}
}
'알고리즘 > 문자열 처리' 카테고리의 다른 글
파이썬 | 백준 | 9935 | 문자열 폭발 (0) | 2020.12.23 |
---|---|
파이썬 | 백준 | 1543 | 문서 검색 (0) | 2020.08.20 |
파이썬 | 백준 | 4949 | 균형잡힌 세상 (0) | 2020.08.19 |
파이썬 | 백준 | 10546 | 배부른 마라토너 (0) | 2020.08.18 |