처음부터 차근차근
class2 - 1259번 팰린드롬수 (자바) 본문
반응형
문제 : https://www.acmicpc.net/problem/1259
이 문제에서 쓰인 개념
StringBuffer, StringBulilder
자주 가변하는 문자열 생성할 때 사용하는 클래스.
둘의 차이점 :
StringBuffer : 멀티스레드 환경에서 성능이 좋음.
StringBuilder : 싱글스레드 환경에서 성능이 좋음.
StringBuffer 클래스 함수
- .reverse() : 문자열 순서 거꾸로 나열
소스
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class q_1259 {
public static void main(String args[]) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuffer sb;
List<String> results = new ArrayList<>();
while (true) {
sb = new StringBuffer(br.readLine());
if (sb.toString().equals("0")) {
break;
}
if (sb.toString().equals(sb.reverse().toString())) {
results.add("yes");
}
else {
results.add("no");
}
}
for (String result : results) {
bw.write(result + "\n");
}
// close
br.close();
bw.flush();
bw.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
주의할 점
sb.reverse().toString().equals( sb.toString() );
이렇게 쓰면 안됨.
이렇게 하면 reverse 된 값이 sb에 남아있어서 무조건 true로 나옴.
sb.equals("0");
이렇게 쓰면 안됨.
StringBuffer는 String과 다르게 equals()를 재정의 하지 않음.
그래서 == 을 쓰는 행위와 같음.
따라서 객체 sb와 문자열 "0"의 주솟값은 항상 다르기 때문에 무조건 false가 나오게 됨.
반응형
'알고리즘' 카테고리의 다른 글
class2 - 1929번 소수 찾기 (자바) (0) | 2024.05.19 |
---|---|
class2 - 1978번 소수 찾기 (자바) (0) | 2024.05.19 |
class2 - 1181번 단어 정렬 (자바) (0) | 2024.05.14 |
내가 공부하려고 만든 알고리즘 입출력 코드 정리 (0) | 2024.01.03 |
시간 복잡도 정리 (0) | 2023.09.06 |
Comments