๐ŸŒฒ Altu-Bitu/๊ตฌํ˜„&์‹œ๋ฎฌ๋ ˆ์ด์…˜

[BOJ S3][C++] ๋ฐฑ์ค€ 1213๋ฒˆ: ํŒฐ๋ฆฐ๋“œ๋กฌ ๋งŒ๋“ค๊ธฐ

์„ ๋‹ฌ 2022. 9. 19. 03:01
๋ฐ˜์‘ํ˜•

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

 

1213๋ฒˆ: ํŒฐ๋ฆฐ๋“œ๋กฌ ๋งŒ๋“ค๊ธฐ

์ฒซ์งธ ์ค„์— ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๋Š” "I'm Sorry Hansoo"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ •๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„œ๋Š” ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

์ž„ํ•œ์ˆ˜์™€ ์ž„๋ฌธ๋นˆ์€ ์„œ๋กœ ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ์ด์ด๋‹ค.

์ž„ํ•œ์ˆ˜๋Š” ์„ธ์ƒ์—์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ๋ฌธ์ž์—ด์„ ๋„ˆ๋ฌด ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‘˜์˜ ๋ฐฑ์ผ์„ ๊ธฐ๋…ํ•ด์„œ ์ž„๋ฌธ๋นˆ์€ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ์„ ๋ฌผํ•ด์ฃผ๋ ค๊ณ  ํ•œ๋‹ค.

์ž„๋ฌธ๋นˆ์€ ์ž„ํ•œ์ˆ˜์˜ ์˜์–ด ์ด๋ฆ„์œผ๋กœ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ž„ํ•œ์ˆ˜์˜ ์˜์–ด ์ด๋ฆ„์˜ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋ฅผ ์ ์ ˆํžˆ ๋ฐ”๊ฟ”์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

์ž„๋ฌธ๋นˆ์„ ๋„์™€ ์ž„ํ•œ์ˆ˜์˜ ์˜์–ด ์ด๋ฆ„์„ ํŒฐ๋ฆฐ๋“œ๋กฌ์œผ๋กœ ๋ฐ”๊พธ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž„ํ•œ์ˆ˜์˜ ์˜์–ด ์ด๋ฆ„์ด ์žˆ๋‹ค. ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ๋œ ์ตœ๋Œ€ 50๊ธ€์ž์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๋Š” "I'm Sorry Hansoo"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ •๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„œ๋Š” ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๋ฌธ์ž์—ด์„ ๋ฐ›์•„์„œ ํ•ด๋‹น ๋ฌธ์ž์—ด์— ๋“ค์–ด๊ฐ„ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์„œ alphabet[] ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.

 

์ด์ œ ์„ธ๊ฐ€์ง€ ๊ฐˆ๋ฆผ๊ธธ

1. ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ์ด ์ง์ˆ˜๊ฐœ์ˆ˜

2. ํ•œ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ์ด ํ™€์ˆ˜๊ฐœ์ˆ˜, ๋‚˜๋จธ์ง€๋Š” ์ง์ˆ˜๊ฐœ์ˆ˜

3. ๋‘๊ฐœ ์ด์ƒ์˜ ์•ŒํŒŒ๋ฒณ์ด ํ™€์ˆ˜๊ฐœ์ˆ˜

 

1๋ฒˆ์€ ๊ทธ๋ƒฅ ๊ตฌํ˜„ํ•˜๋ฉด๋œ๋‹ค.

2๋ฒˆ์€ ํ™€์ˆ˜๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด ์„ผํ„ฐ์— ์“ฐ์ด๋ฉด ๋œ๋‹ค

3๋ฒˆ์€ ๊ตฌํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค -> sorry ์–ด์ฉŒ๊ตฌ

 

๊ตฌํ˜„์€ ๋” ๊ฐ„๋‹จํ•˜๋‹ค. ์–ด์ฐจํ”ผ ์‚ฌ์ „์ˆœ์ด๋ฏ€๋กœ alphabet ๋ฐฐ์—ด์„ ๋Œ๋ฉฐ ์•ž์—๊ฒƒ๋ถ€ํ„ฐ

๊ฐœ์ˆ˜์˜ ์ ˆ๋ฐ˜๋งŒํผ์„ halfAns ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€

 

์ •๋‹ต์ธ ๋ฌธ์ž์—ด์€ {halfAns} + {์„ผํ„ฐ์•ŒํŒŒ๋ฒณ (์žˆ๋‹ค๋ฉด)} + {halfAns ๊ฑฐ๊พธ๋ฆฌ๋ฒ„์ „}

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

string solution(string s) {
    string ans;
    
    // ๋ฌธ์ž์—ด์— ๋“ค์–ด๊ฐ„ ์•ŒํŒŒ๋ฒณ ๊ฐฏ์ˆ˜ ์„ธ๊ธฐ
    vector<int> alphabet(26, 0);
    for(int i=0; i<s.size(); i++)
        alphabet[s[i]-'A']++;
    
    // ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ ์นด์šดํŠธํ•˜๊ธฐ
    int odd = -1;
    for(int i=0; i<26; i++) {
        if(alphabet[i] % 2 == 1) { // ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด ์žˆ๋‹ค๋ฉด
            if(odd != -1) return "I'm Sorry Hansoo";  // ์ด๋ฏธ ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ์ด ์žˆ์„ ๊ฒฝ์šฐ
            odd = i;  //  ํ™€์ˆ˜ ๊ฐœ์ˆ˜์ธ ์•ŒํŒŒ๋ฒณ ๋ณด๊ด€
        }
    }
    
    // ๋‹ต ๋ฌธ์ž์—ด ๋ฐ˜์ชฝ ๊ตฌํ•˜๊ธฐ
    string halfAns;
    for(int i=0; i<26; i++) {
        for(int j=0; j<alphabet[i]/2; j++) {
            halfAns.push_back(i+'A');
        }
    }
    
    // ๊ตฌํ•œ ๋ฐ˜์ชฝ๋ฌธ์ž์—ด ์ถ”๊ฐ€ํ•˜๊ณ , ์„ผํ„ฐ์— ์•ŒํŒŒ๋ฒณ(์žˆ๋‹ค๋ฉด) ๋„ฃ๊ณ , ๋ฐ˜์ชฝ๋ฌธ์ž์—ด ๋’ค์ง‘์–ด์„œ ์ถ”๊ฐ€
    ans += halfAns;
    
    if(odd != -1) ans.push_back(odd+'A');
    
    reverse(halfAns.begin(), halfAns.end());
    ans += halfAns;
    
    return ans;
}

int main() {
    string input;
    cin >> input;

    string ans = solution(input);
    
    cout << ans;
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•