[JAVA]백준 12904번 - A와 B
12904번: A와 B
수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수
www.acmicpc.net
처음에 아무생각없이 A뒤집어서 B에 있나 비교하기만 하면 좀 간단할 거 같은데 싶어서 했는데
당연히 B BABA 같은 예시는 안 되니까 틀렸습니다 나왔습니당
package baekjoon;
import java.util.*;
import java.io.*;
public class b12904 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a = br.readLine();
String b = br.readLine();
StringBuffer newA = new StringBuffer(a);
a = newA.reverse().toString();
if(b.contains(a))
bw.write(1+"");
else
bw.write(0+"");
bw.close();
}
}
B에서
끝이 A면 A빼고
끝이 B면 B뺀 다음에 뒤집고 하는 거를
B-A 만큼 반복해서 B랑 A랑 같은지 비교했습니다
package baekjoon;
import java.util.*;
import java.io.*;
public class b12904 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a = br.readLine();
String b = br.readLine();
StringBuffer newB = new StringBuffer(b);
int interval = b.length() - a.length();
for(int i = 0 ; i < interval ; i++)
{
if(newB.charAt(newB.length()-1) == 'A')
newB = newB.deleteCharAt(newB.length()-1);
else
{
newB = newB.deleteCharAt(newB.length()-1);
newB = newB.reverse();
}
}
b = newB.toString();
if(b.equals(a))
bw.write(1+"");
else
bw.write(0+"");
bw.close();
}
}
뒤집고 막 빼고 할 거라 스트링 버퍼 쓰면 쉬울 거 같아서 스트링 버퍼로 했슴니다
StringBuffer할 때는
마지막 글자 뺄 때는 deleteCharAt()과 setLength() 둘 중 하나 이용하면 됨니다
StringBuffer는 String보다 메모리, 시간 많이 차지해서 문자열 변경이나 추가 작업이 많을 때 사용하면 좋다네요
알게 된 점

subString 반환형이 String이라 스트링버퍼에 못 넣어서 substring한걸 스트링버퍼로 만들어서 넣어줘야해요
스트링버퍼랑 스트링빌더랑 사용법은 비슷?똑같?은데 스트링버퍼가 더 무거운 대신에 동기화 처리를 해줘서
중복점유를 막을 수 있다고 하네요
☕ 자바 String / StringBuffer / StringBuilder 차이점 & 성능 비교 (tistory.com)
☕ 자바 String / StringBuffer / StringBuilder 차이점 & 성능 비교
자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 라는 3가지 자료형을 지원한다. 위 3가지 클래스 자료형은 모두 문자열을 다루는데 있어 공통적으로 사용되
inpa.tistory.com
이 선생님께서 정리 정말 깔끔하게 잘해주셨슴니다
왕신기한거 처음안거!~!
String 불변이유 캐싱 보안 동기화 이유 때문이라네요
String a = "a"+"b";
이게 컴파일 과정에서
String a= new StringBuilder("a").append("b").toString(); 이렇게 되는거라네요
+로 더하게 되면 이 과정이 계속 반복되기도 하고 메모리 차지 많이 되니까
많이 더하게 될 경우에는 스트링 빌더로 애초에 하는게 좋대요
신기방구네용
스트링 빌더랑 버퍼에는 이퀄스 기능?이 없어서 스트링으로 바꾼 다음에 비교해줘야한대용
