๋ฌธ์
์ํ์์ ์๋ฌธ๋น์ ์๋ก ์ฌ๋ํ๋ ์ฌ์ด์ด๋ค. ์ํ์๋ ์ธ์์์ ํฐ๋ฆฐ๋๋กฌ์ธ ๋ฌธ์์ด์ ๋๋ฌด ์ข์ํ๊ธฐ ๋๋ฌธ์, ๋์ ๋ฐฑ์ผ์ ๊ธฐ๋ ํด์ ์๋ฌธ๋น์ ํฐ๋ฆฐ๋๋กฌ์ ์ ๋ฌผํด์ฃผ๋ ค๊ณ ํ๋ค.
์๋ฌธ๋น์ ์ํ์์ ์์ด ์ด๋ฆ์ผ๋ก ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค๋ ค๊ณ ํ๋๋ฐ, ์ํ์์ ์์ด ์ด๋ฆ์ ์ํ๋ฒณ ์์๋ฅผ ์ ์ ํ ๋ฐ๊ฟ์ ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค๋ ค๊ณ ํ๋ค.
์๋ฌธ๋น์ ๋์ ์ํ์์ ์์ด ์ด๋ฆ์ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ๋ฐ๊พธ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ํ์์ ์์ด ์ด๋ฆ์ด ์๋ค. ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ๋ ์ต๋ 50๊ธ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ถ๊ฐ๋ฅํ ๋๋ "I'm Sorry Hansoo"๋ฅผ ์ถ๋ ฅํ๋ค. ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ์๋ ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
ํ์ด
ํฐ๋ฆฐ๋๋กฌ์๋ part1 + part2 + part3 (part1์ ๋์นญ)์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๋จผ์ ๊ฐ ์ํ๋ฒณ์ ์๋ฅผ ์ผ ํ, ์ฌ์ ์์ผ๋ก ์ฝ์ด๊ฐ๋ฉด์ part1๊ณผ part3์ ํ๋์ฉ ํ ๋นํ๋ค.
๋ง์ฝ ์ํ๋ฒณ์ ์๊ฐ ํ์์ธ ๊ฒฝ์ฐ, part2์ ํ ๋นํ๋ค. ๊ทธ๋ฌ๋ part2๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ํฐ๋ฆฐ๋๋กฌ์ด ๋ถ๊ฐ๋ฅํ๋ค. (๋์นญ ๋ถ๊ฐ)
#include <iostream>
using namespace std;
int alphabet[26] = {0,};
/*
* ๋์นญ๋ฌธ์์ด + ์ค๊ฐ ๋ฌธ์(0~1๊ธ์) + ๋์นญ๋ฌธ์์ด
* 1. ๊ฐ ์ํ๋ฒณ์ด ๋ช ๊ฐ์ธ์ง ์ ์ฅ
* 2. ์ฌ์ ์์ผ๋ก ์์ ํ ๋ฆฐ๋๋กฌ ์ ์์ฑ -> ๋์นญ ๋ฌธ์์ด์ ํ๋์ฉ ํ ๋น
* 3. ๋ง์ฝ ์ํ๋ฒณ์ ์๊ฐ ํ์์ธ ๊ฒฝ์ฐ, ์ค๊ฐ ๋ฌธ์์ ํ ๋น. ๋ง์ฝ ์ด๋ฏธ ์ค๊ฐ ๋ฌธ์๊ฐ ์๋ค๋ฉด ํฐ๋ฆฐ๋๋กฌ ๋ถ๊ฐ ์ถ๋ ฅ
*/
string makePelindrome() {
string part1 = "", part2 = "", part3 = "";
for (int i = 0; i < 26; i++) {
if (alphabet[i] % 2 == 1) {
if (part2.size() == 1)
return "I'm Sorry Hansoo";
part2 = (char) (i + 'A');
}
for (int j = 0; j < alphabet[i] / 2; j++) {
part1 += (char) (i + 'A');
part3 = (char) (i + 'A') + part3; // ๋์นญ์ผ๋ก ๋ํด์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ +=๋ฅผ ์ฐ๋ฉด ์ ๋๋ค!
}
}
return part1 + part2 + part3;
}
int main() {
string name;
cin >> name;
// 1๋ฒ : ์ํ๋ฒณ ๊ฐ์ ์ ์ฅ
for (int i = 0; i < name.length(); i++)
alphabet[name[i] - 'A']++;
// 2๋ฒ : ํฐ๋ฆฐ๋๋กฌ ์ ์์ฑ
cout << makePelindrome();
}
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 18115๋ฒ: ์นด๋ ๋๊ธฐ (0) | 2022.07.24 |
---|---|
[๋ฐฑ์ค/C++] 2108๋ฒ: ํต๊ณํ (0) | 2022.07.24 |
[๋ฐฑ์ค/C++] 20920๋ฒ: ์๋จ์ด ์๊ธฐ๋ ๊ดด๋ก์ (0) | 2022.07.17 |
[๋ฐฑ์ค/C++] 20291๋ฒ: ํ์ผ ์ ๋ฆฌ (0) | 2022.07.17 |
[๋ฐฑ์ค/C++] 19583๋ฒ: ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (0) | 2022.07.17 |
๋๊ธ