Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 1213 팰린드롬 만들기 본문

Programming/BOJ

[백준/BOJ] 1213 팰린드롬 만들기

he1fire 2020. 9. 18. 21:02
728x90

문제 : 1213 팰린드롬 만들기

 

1213번: 팰린드롬 만들기

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

www.acmicpc.net

문자열을 입력받아 순서를 바꾸어 팰린드롬으로 만들어 출력하는 문제이다.

어떤 문자의 개수가 홀수인 경우가 2개 이상이 되면 불가능한 경우이고,

가능할 경우에는 사전 순으로 가장 빠른 것을 출력해야 하기 때문에

배열 앞에서부터 순차적으로 출력하고 홀수개인 것을 출력한 뒤,

다시 뒤에서부터 순차적으로 출력하면 된다. 


Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll arr[30]={0}, chk=0;
    string S;
    cin >> S;
    for (int i=0;i<S.size();i++){
        arr[S[i]-'A']++;
    }
    for (int i=0;i<26;i++){
        if (arr[i]%2)
            chk++;
    }
    if (chk>1){
        cout << "I'm Sorry Hansoo";
    }
    else{
        for (int i=0;i<26;i++){
            for (int j=0;j<arr[i]/2;j++)
                cout << (char)(i+'A');
        }
        for (int i=0;i<26;i++){
            if (arr[i]%2)
                cout << (char)(i+'A');
        }
        for (int i=25;i>=0;i--){
            for (int j=0;j<arr[i]/2;j++)
                cout << (char)(i+'A');
        }
    }
    return 0;
}
728x90

'Programming > BOJ' 카테고리의 다른 글

[백준/BOJ] 5525 IOIOI  (0) 2020.09.19
[백준/BOJ] 1780 종이의 개수  (0) 2020.09.19
[백준/BOJ] 1531 투명  (0) 2020.09.18
[백준/BOJ] 9715 면적 구하기  (0) 2020.09.18
[백준/BOJ] 15429 Odd Gnome  (0) 2020.09.18
Comments