https://www.acmicpc.net/problem/10988
접근 방법
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
StringTokenizer st = new StringTokenizer(br.readLine());
char[] arr1 = new char[input.length()/2];
char[] arr2 = new char[input.length()/2];
for(int i=0; i<input.length()/2; i++) {
arr1[i] = input.charAt(i);
}
for(int j=input.length()-1; j>input.length()/2; j--) {
arr2[j] = input.charAt(j);
}
if(arr1[i]==arr2[j]) {
bw.write("1");
}
else
bw.write("0");
br.close();
bw.flush();
bw.close();
}
}
arr2의 반복문 배열 인덱스, if 조건문 때문에 틀린 코드이다.
배열 1 : index 0 ~ index [input.length()/2]
배열 2 : index -1 ~ indexl[input.length()/2]
반복문으로 배열에 각 문자들 할당 후 반복문으로 다시 두 배열이 동일한지 확인
1 or 0 출력
정답 코드1 (반복문 3개)
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
char[] arr1 = new char[input.length()/2];
char[] arr2 = new char[(input.length()+1)/2];
for(int i=0; i<input.length()/2; i++) {
arr1[i] = input.charAt(i);
}
for (int j = input.length() - 1; j >= input.length()/2; j--) {
arr2[j - input.length() / 2] = input.charAt(j);
}
boolean isEqual = true;
for(int i=0; i<arr1.length; i++) {
if(arr1[i]!=arr2[arr2.length-1-i]) {
isEqual = false;
break;
}
}
if(isEqual) {
bw.write("1");
}
else
bw.write("0");
br.close();
bw.flush();
bw.close();
}
}
정답 코드2 (다른 분의 블로그를 참고해서 간결)
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
int result = 1;
for(int i=0; i<input.length()/2; i++){
if(input.charAt(i) != input.charAt(input.length()-1-i)){
result=0; // 팰린드롬이 아닐 경우 result<-0
}
}
bw.write(String.valueOf(result));
br.close();
bw.flush();
bw.close();
}
}
참고한 블로그 : https://auyeol-coding.tistory.com/51
2번 코드가 더욱 간결하고 쉽습니다.
저의 1번 코드는 불필요한 반복문 남발..
'백준 > 브론즈 탈출하기' 카테고리의 다른 글
[Java] 백준 9086번 : 문자열 (0) | 2024.03.18 |
---|---|
[Java] 백준 10811번 : 바구니 뒤집기 (0) | 2024.03.13 |
[Java] 백준 1978번 : 소수 찾기 (0) | 2023.12.02 |
[Java] 백준 11022번 : A+B-8 (2) | 2023.11.23 |
[Java] 백준 11021번 : A+B -7 (2) | 2023.11.23 |