본문 바로가기
Algorithm/백준

[백준] BOJ 1254 팰린드롬 만들기(자바)

by 코딩로그 2023. 6. 1.

문제 풀이

 

문제에서 주어진 예제 입력 3번을 예시로 들어보자

 

해당 예시를 토대로 문자를 붙여보면 다음과 같다. 

qwertytrewq

 

 

해당 예시를 토대로 팰린드롬을 만들기 위해서는 

qwert를 그대로 뒤집어서 trewq를 붙이면 된다. 

 

 

그래서 나는 0~i 번째 행까지의 문자열을 붙여보았다. 이때, 문자열을 뒤집어서 붙여야 해서 reverse() 함수를 사용했다.

 

for문을 돌면 다음과 같이 출력된다.

qwerty
qwertyq
qwertywq
qwertyewq
qwertyrewq
qwertytrewq ( 팰린드롬 완성)

 

 

 

 

 

문제를 풀며 어려웠던 점

문제 쉽다고 생각했는데,  

문자열을 그대로 뒤집어서 붙여보면 됐는데, 그 부분을 생각못한 문제

문자열을 뒤집어서 안붙이고 그대로 붙여서 테케를 전부 맞지 못했던 문제였다.

 

 


 

구현

 

public class Main_1254 {
	static int result;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		result = 0;

		solve(str);

		System.out.println(result);
	}

	static void solve(String input){
		StringBuilder tmp = new StringBuilder().append(input);
		if(input.equals(tmp.reverse().toString())){//이미 팰린드롬인 경우를 확인
			result = input.length();
			return;
		}

		for (int i = 0; i < input.length(); i++) {
			StringBuilder sb = new StringBuilder(input);
			String subStr = input.substring(0, i);

			sb.append(new StringBuilder().append(subStr).reverse());//문자열을 뒤집어서 붙이기

			String check = sb.toString();
			if(check.equals(sb.reverse().toString())){//팰린드롬인 경우
				result = sb.length();
				return;
			}
		}

	}




}