백준 1254

오늘내일·2023년 8월 28일
1

코딩테스트

목록 보기
4/4

처음 접근

문제를 안일하게 읽었다. 문제에서는 문자열 뒤로 추가해야 한다는 조건이 있는데, 난 문자열 아무데나 추가하면 된다고 생각했다. 그래서 처음 풀었을 때부터 뭔가 꼬인 것 같다. 문제를 풀고 결과를 보니 틀리고, 조건문 추가하고, 또 틀리고의 반복이었다.

풀릴듯 말듯 몇시간을 하다가 아 못 해 먹겠다 싶어서 구글링을 했다.

중요하다고 생각한 아이디어

구글링을 통해서 아이디어를 참고하여 아래와 같이 다시 풀었다.

import java.util.Scanner;

public class Baekjoon1254 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String answer = new String(str);
        for (int i = 0; i < str.length(); i++) {
            if (isPalindrome(str.substring(i))){
                StringBuilder sb = new StringBuilder();
                sb.append(str);
                if (i > 0) {
                    for (int j = i - 1; j >= 0; j--) {
                        sb.append(str.charAt(j));
                    }
                    answer = sb.toString();
                }
                break;
            }
        }
        System.out.println(answer.length());

    }
    public static boolean isPalindrome(String str){
        for (int i = 0; i < str.length()/2; i++) {
            if (str.charAt(i) != str.charAt(str.length() - 1 -i)){
                return false;
            }
        }
        return true;
    }
}

여기서 중요한 아이디어는 문자열을 하나씩 줄여 나가면서 팰린드롬 검사를 하는 거라고 생각한다. 어차피 문자열 뒤로 문자를 추가해서 팰린드롬을 만들어야 하기 때문에, 주어진 문자열의 특정위치부터 문자열의 마지막까지가 팰린드롬이라면 조금만 가공해서 팰린드롬 문자열을 만들 수 있기 때문이다.

아이디어 참고처 : https://ilmiodiario.tistory.com/145

느낀 점

몇시간을 날려서 짜증이 난건지, 쉬운 문제도 못 풀었다고 스스로 자책해서 그런지 기분이 안 좋았다. 반성이 필요하다.

  • 아직 초짜라는 걸 인정하고 받아들이자.
  • 문제를 제대로 읽어서 처음부터 접근을 제대로 하자.
  • 뭔가 잘 못 됐을 때는 써놓은 코드를 조금 수정해서 쓰기보다는, 아예 처음부터 접근을 해야 할 필요도 있다.
  • 지금 이 문제를 못 푼다고 해서, 나중에 실력없는 개발자가 되는 것은 아니다.

반성합니다..🥲

profile
다시 시작합니다.

0개의 댓글