본문 바로가기
Algorithm 문제풀기/Baekjoon

[JAVA] 팰린드롬 만들기 ::: 그리디 알고리즘

by 내일이야 2023. 9. 30.

[ 문제 ]

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

반례)

AZ -> I'm Sorry Hansoo

AAA -> AAA

ZAAZ -> AZZA

 

 

[ 제출코드 ]

 

 

 

[ 풀이 ]

  1. 각 알파벳 개수 계산
    예) ABCAB  ->  A: 2, B: 2, C: 1
  2. 개수가 1개인 알파벳이 2개 이상인 경우, "I'm Sorry Hansoo" 출력
  3. 개수가 1개인 알파벳이 1개만 존재하는 경우, 가장 가운데에 그 알파벳 넣기  
    중간의 앞 부분은 사전 순으로 놓고 그 앞 부분을 거꾸로 해서 뒷 부분을 채우기
  4. 개수가 2n개인 알파벳으로만 이루어진 경우, (각 알파벳의 개수) / 2 개를 사전 순으로 앞에 놓고 그 앞 부분을 거꾸로 해서 뒷 부분을 채우기

 

 

[ 이야기 ]

n개만큼 문자열을 붙여야할 때는 String에서 제공하는 repeat 메서드를 사용하면 됩니다.

String str = "abc";
str.repeat(3); // abcabcabc

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat