Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 2343
  • 백준 12871
  • 백준 15655
  • Java
  • 백준 15961
  • 백준 1531
  • 백준 12605
  • 백준 4659
  • 백준 14582
  • 백준 2225
  • 백준 7567
  • 백준 1747
  • 백준 24039
  • 백준 16194
  • 백준 1064
  • 백준 1914
  • 백준 3049
  • 백준 7662
  • 백준 8892
  • 백준
  • 백준 1495
  • 백준 15312
  • 자바
  • 백준 2591
  • 백준 6550
  • 백준 10709
  • 백준 2467
  • 백준 1011
  • 백준 3135
  • 백준 16926
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 1213 팰린드롬 만들기(Java)
백준

백준 1213 팰린드롬 만들기(Java)

2023. 2. 4. 02:00

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

 

1213번: 팰린드롬 만들기

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

www.acmicpc.net


 

해석 및 팁

 


 

먼저 배열에 입력받은 문자열의 알파벳의 개수를 저장해 줍니다. 길이가 홀수인데 1개뿐인 숫자가 여러 개 거나 글자의 길이가 짝수인데 1개뿐인 숫자가 있거나 개수가 홀수인 알파벳이 2개 이상 있으면 팰린드롬수를 만들 수 없으므로 I'm Sorry Hansoo를 출력해주면됩니다. 만들 수 있는 경우에는 먼저 문자열의 절반을 list에 저장합니다. 그다음 홀수 있으면 절반의 문자열중 앞부분에 더합니다. 그다음 반대쪽을 만들기 위해 뒤집어서 합치면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    StringBuilder list = new StringBuilder();

    int[] alpha = new int[26];
    String str = sc.next();

    for(int i = 0; i < str.length(); i++) alpha[str.charAt(i) - 'A']++;

    int odd = 0;
    int index = 0;

    for(int i = 0; i < 26; i++) {
      if(alpha[i] % 2 == 1) {
        odd++;
        index = i;
      }
    }
    
    if((str.length() % 2 == 1 && odd > 1) || (str.length() % 2 == 0 && odd > 0) || odd >= 2) sb.append("I'm Sorry Hansoo");

    else {
      
      for(int i = 0; i < 26; i++) {
        for(int j = 0; j < alpha[i] / 2; j++) list.append((char)(i + 'A'));
      }

      String ori = list.toString();
      String rev = list.reverse().toString();

      if(odd == 1) ori += (char)(index +'A');

      sb.append(ori + rev);
    }
    
    System.out.println(sb);
  }
}

'백준' 카테고리의 다른 글

백준 1783 병든 나이트(Java)  (0) 2023.02.04
백준 1431 시리얼 번호(Java)  (0) 2023.02.04
백준 1072 게임(Java)  (0) 2023.02.03
백준 10973 이전 순열(Java)  (0) 2023.02.03
백준 17626 Four Squares(Java)  (0) 2023.02.03
    '백준' 카테고리의 다른 글
    • 백준 1783 병든 나이트(Java)
    • 백준 1431 시리얼 번호(Java)
    • 백준 1072 게임(Java)
    • 백준 10973 이전 순열(Java)
    Park DJ
    Park DJ

    티스토리툴바