[ 백준 ] 1213 - 팰린드롬 만들기(with.Java)

SoyuliaSoyulia
2 min read

💡문제 분석 요약

-- 문제 --

입력 :영어 이름으로 팰린드롬을 만들려고 하는데, 임한수의 영어 이름의 알파벳 순서를 적절히 바꿔서 팰린드롬을 만들려고 한다.첫째 줄에 임한수의 영어 이름이 있다. 알파벳 대문자로만 된 최대 50글자이다.

출력 : 첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.

💡알고리즘 설계

  1. BufferedReader사용

  2. SpringBuilder사용

  3. 팰린드롬 = ABAB → ABBA 처럼 대칭 제작

  4. 문자가 홀수인 경우 1번까지 허용 , 짝수일 경우 앞부분 먼저 넣고 뒷부분 나중에 넣기. 홀수가 존재한다면 가운데에 넣기.

💡코드

package backjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BackJoon1213 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int[] arr = new int[26];
        String input = br.readLine();
        for (int i = 0; i < input.length(); i++) {
            int index = input.charAt(i) - 'A';
            arr[index]++;
        }
        int odd=0;
        int num=0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 != 0) {
                odd++;
                num=i;
            }
            if (odd >= 2) {
                System.out.println("I'm Sorry Hansoo");
                return;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i] / 2; j++) {
                sb.append((char) (i + 'A'));
            }
        }
        String result = sb.toString();
        if (odd == 1) {
            result += (char) (num + 'A');
        }
        result += sb.reverse().toString();
        System.out.println(result);
    }
}

💡시간복잡도

O(N*N)

💡틀린 이유

  1. reverse처리

  2. 홀수 글자 있을 때 경우 처리

💡틀린 부분 수정 or 다른 풀이

💡느낀점 or 기억 할 정보

  1. 팰린드롬 알고리즘 = 문자 대칭 만들기 ! 홀수 개 문자 1번 허용

  2. A~Z까지 26개 → 문자.charAt()- ‘A’로 문자를 숫자로 바꾼 후 인덱스에 번호로 저장 가능

0
Subscribe to my newsletter

Read articles from Soyulia directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Soyulia
Soyulia

Nice to meet u :) Im Backend Developer