문제
동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다.
동호는 규완이를 위한 깜짝 선물을 준비했다. 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다. 동호는 가능하면 가장 짧은 문자열을 만들려고 한다.
동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. S의 길이는 최대 1000이다.
출력
첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.
🌈 풀이 후기
- 은근 자주 나오는 팰린드롬 문제이다.
- 처음에는 문제를 잘못 읽고 투포인터로 접근했다가 뒤에만 붙일 수 있다는걸 알고 다시 풀었다.
👩🏫 문제 풀이
- start를 하나씩 증가시키면서 팰린드롬이 성립되는지 확인한다.
- 만약 팰린드롬이 되면 그 즉시 종료시킨다.
- 팰린드롬이 아니면 start를 하나 증가시키고 다시 팰린드롬 체크한다.
package com.Boj.Day12;
import java.util.Scanner;
public class BOJ_S1_1254_팰린드롬만들기 {
private static int sol(String str) {
int len=str.length();
for (int i = 0; i < len; i++) {
if(isPalind(str.substring(i))) {
return len+i;
}
}
return 0;
}
private static boolean isPalind(String str) {
int start=0;
int end=str.length()-1;
while(start<=end) {
if(str.charAt(start) !=str.charAt(end))
return false;
start++;
end--;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(sol(str));
}
}
'Algorithm(알고리즘) > Java' 카테고리의 다른 글
[Java][백준 13460][BFS+시뮬레이션][삼성SW 역량 테스트] 구슬탈출 2 (0) | 2021.04.22 |
---|---|
[Java][백준 20056][시뮬레이션][삼성SW 역량 테스트] 마법사 상어와 파이어볼 (0) | 2021.04.15 |
[Java][백준 4485][다익스트라] 녹색 옷 입은 애가 젤다지? (0) | 2021.04.07 |
[Java][백준 1753][그래프, 다익스트라] 최단 경로 (0) | 2021.03.23 |
[Java][백준 1516][그래프, 위상정렬] 게임 개발 (0) | 2021.03.17 |