2023. 2. 10. 23:59ใ๐ Algorithm/๐ C++ ๋ฌธ์ ํ์ด
[C++ - ๋ฐฑ์ค 1213] ๋ฌธ์
๋ฌธ์ ์ค๋ช
์ํ์์ ์๋ฌธ๋น์ ์๋ก ์ฌ๋ํ๋ ์ฌ์ด์ด๋ค.
์ํ์๋ ์ธ์์์ ํฐ๋ฆฐ๋๋กฌ์ธ ๋ฌธ์์ด์ ๋๋ฌด ์ข์ํ๊ธฐ ๋๋ฌธ์, ๋์ ๋ฐฑ์ผ์ ๊ธฐ๋ ํด์ ์๋ฌธ๋น์ ํฐ๋ฆฐ๋๋กฌ์ ์ ๋ฌผํด์ฃผ๋ ค๊ณ ํ๋ค.
์๋ฌธ๋น์ ์ํ์์ ์์ด ์ด๋ฆ์ผ๋ก ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค๋ ค๊ณ ํ๋๋ฐ, ์ํ์์ ์์ด ์ด๋ฆ์ ์ํ๋ฒณ ์์๋ฅผ ์ ์ ํ ๋ฐ๊ฟ์ ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค๋ ค๊ณ ํ๋ค.
์๋ฌธ๋น์ ๋์ ์ํ์์ ์์ด ์ด๋ฆ์ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ๋ฐ๊พธ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ํ ์ฌํญ
์ฒซ์งธ ์ค์ ์ํ์์ ์์ด ์ด๋ฆ์ด ์๋ค. ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ๋ ์ต๋ 50๊ธ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ถ๊ฐ๋ฅํ ๋๋ "I'm Sorry Hansoo"๋ฅผ ์ถ๋ ฅํ๋ค. ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ์๋ ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์์ ์ ๋ ฅ 1
AABB
์์ ์ถ๋ ฅ 1
ABBA
์์ ์ ๋ ฅ 2
AAABB
์์ ์ถ๋ ฅ 2
ABABA
์์ ์ ๋ ฅ 3
ABACABA
์์ ์ถ๋ ฅ 3
AABCBAA
์์ ์ ๋ ฅ 4
ABCD
์์ ์ถ๋ ฅ 4
I'm Sorry Hansoo
ํ์ด ๊ณผ์
ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค๊ธฐ ์ํด์๋ ์ ๋ ฅ string์ ์์๋ ์ค์ํ์ง ์๋ค.
๋จ ํฐ๋ฆฐ๋๋กฌ์ ๊ท์น์ผ๋ก, ๋ฌธ์(char)์ ๊ฐ์๊ฐ ํ์ ์ธ ๊ฒ์ด 2๊ฐ ์ด์์ด๋ฉด ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค ์ ์๋ค!
-> ๊ทธ๋์ a~z ์์ผ๋ก cnt์ ์ํ๋ฒณ ๊ฐฏ์๋ฅผ ์ถ๊ฐํ๋ค.
i = 'Z' ~ 'A' ๊น์ง ์ํ ํ๊ธฐ
- ๋ฌธ์ ์์ ์ ๋ต์ด ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ, ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ผ ํ๊ธฐ ๋๋ฌธ์
ret ๋ฌธ์์ด์ ์ถ๊ฐํ ๋๋ 'Z' ๋ถํฐ ์ถ๊ฐํด์ค๋ค.
๊ทธ๋์ผ ex) ZAZ -> BZAZB -> ABZAZBA ์ด๋ ๊ฒ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ!
cnt[i] & 1 ์ ๋นํธ ์ฐ์ฐ์๋ก ํ์์ธ์ง ์ง์์ธ์ง ์ฌ๋ถ๋ฅผ ์ฒดํฌํด์ค๋ค
- ํ์ ์ธ๊ฒฝ์ฐ mid ๊ฐ์ ์ ์ฅํ๊ณ flag๋ก ํ์์ธ ์ํ๋ฒณ์ ๊ฐ์๋ฅผ ํ์ธํ๋ค (2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ํฐ๋ฆฐ๋๋กฌ์ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ!)
์ถํ ์์์ ์ ์ฅํ mid char ์ ret ๋ฌธ์์ด ์ ์ค์ (๊ฐ์ด๋ฐ)์ ์ถ๊ฐํด์ฃผ๋ฉด ํฐ๋ฆฐ๋๋กฌ์ด ์์ฑ๋๋ค
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
string str;
cin >> str;
int cnt[200] = {0,};
string ret = "";
for (auto ch : str) {
cnt[ch] ++;
}
char mid = ' ';
int flag = 0;
for (int i = 'Z'; i >= 'A'; i--) {
if (cnt[i]) {
if (cnt[i] & 1) {
mid = char(i); // ํ์๋ ์ค์์ ๋ฃ์ด์ผ ๋๊ธฐ ๋๋ฌธ
flag ++;
cnt[i] --;
}
if (flag == 2) break;
for (int j = 0; j < cnt[i]; j += 2) {
ret = char(i) + ret;
ret += char(i);
}
}
}
if (mid != ' ') ret.insert(ret.begin() + ret.size() / 2, mid);
if (flag == 2) cout << "I'm Sorry Hansoo\n";
else cout << ret << '\n';
return 0;
}
'๐ Algorithm > ๐ C++ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C++ ๋ฐฑ์ค 1620 _ ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ ๋ฌธ์ ํ์ด (0) | 2023.02.10 |
---|---|
C++ ๋์ ํฉ (0) | 2023.02.10 |
C++ String ์๊ณ ๋ฆฌ์ฆ์์ ์์ฃผ ์ฐ์ด๋ ๋ฉ์๋ (0) | 2023.02.06 |