본문 바로가기

알고리즘

[BOJ] 1254. 팰린드롬 만들기 (JAVA)

https://www.acmicpc.net/problem/1254

 

1254번: 팰린드롬 만들기

동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는

www.acmicpc.net

문제

동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다.

동호는 규완이를 위한 깜짝 선물을 준비했다. 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다. 동호는 가능하면 가장 짧은 문자열을 만들려고 한다.

동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 최대 50이다.

출력

첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.

 

풀이

  • 주어진 문자열을 앞에서부터 끊어가며 팰린드롬인지 확인한다.
  • 팰린드롬이면 앞에 제외 된 문자열 길이만큼 뒤에 덧붙여주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static int solution(String input) {
		int answer = 0;
		int len = input.length();
		for(int i=0;i<len;i++) {
			String tmp = input.substring(i);
			if(isPalindrome(tmp)) {
				answer = len+i;
				return answer;
			}
		}
		answer = len+len-1;
		return answer;
	}
    
    //팰린드롬인지 확인
	public static boolean isPalindrome(String input) {
		int len = input.length();
		for(int i = 0;i<len/2;i++) {
			if(input.charAt(i)!=input.charAt(len-i-1)) return false;
		}
		return true;			
	}
    
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input = br.readLine();
		int answer;
		answer = solution(input);
		
		System.out.println(answer);
		
	}
}

느낀점

.substring(index) 도 몰랐던 터라 부족함을 매우 많이 느꼈다. 더 열심히 해야겠다. 그래도 새로 배운점이 있다는게 뿌듯하다.

'알고리즘' 카테고리의 다른 글

[BOJ] BOJ 14500. 테트로미노 (JAVA)  (0) 2022.04.06
[Kotlin] 소금쟁이  (0) 2022.03.31
[BOJ] BOJ 15486. 퇴사2 (JAVA)  (0) 2022.03.07
[BOJ] BOJ 14891. 톱니바퀴 (JAVA)  (0) 2022.03.04
[BOJ] BOJ 11000. 강의실배정 (JAVA)  (0) 2022.03.04