λ¬Έμ
μνμμ μλ¬ΈλΉμ μλ‘ μ¬λνλ μ¬μ΄μ΄λ€.
μνμλ μΈμμμ ν°λ¦°λλ‘¬μΈ λ¬Έμμ΄μ λ무 μ’μνκΈ° λλ¬Έμ, λμ λ°±μΌμ κΈ°λ ν΄μ μλ¬ΈλΉμ ν°λ¦°λ둬μ μ λ¬Όν΄μ£Όλ €κ³ νλ€.
μλ¬ΈλΉμ μνμμ μμ΄ μ΄λ¦μΌλ‘ ν°λ¦°λ둬μ λ§λ€λ €κ³ νλλ°, μνμμ μμ΄ μ΄λ¦μ μνλ²³ μμλ₯Ό μ μ ν λ°κΏμ ν°λ¦°λ둬μ λ§λ€λ €κ³ νλ€.
μλ¬ΈλΉμ λμ μνμμ μμ΄ μ΄λ¦μ ν°λ¦°λ둬μΌλ‘ λ°κΎΈλ νλ‘κ·Έλ¨μ μμ±νμμ€.첫째 μ€μ μνμμ μμ΄ μ΄λ¦μ΄ μλ€. μνλ²³ λλ¬Έμλ‘λ§ λ μ΅λ 50κΈμμ΄λ€.
첫째 μ€μ λ¬Έμ μ μ λ΅μ μΆλ ₯νλ€. λ§μ½ λΆκ°λ₯ν λλ "I'm Sorry Hansoo"λ₯Ό μΆλ ₯νλ€. μ λ΅μ΄ μ¬λ¬ κ°μΌ κ²½μ°μλ μ¬μ μμΌλ‘ μμλ κ²μ μΆλ ₯νλ€.
νμ΄
μμ΄λμ΄
ν°λ¦°λ둬μΌλ‘ λ§λ€ μ μλ κ²½μ°
- μ λ ₯ν λ¬Έμμ΄μ κΈΈμ΄κ° μ§μμΈ κ²½μ°, λ¬Έμμ΄μ ν¬ν¨λ μνλ²³μ κ°μκ° λͺ¨λ μ§μμ¬μΌ νλ€.
- μ λ ₯ν λ¬Έμμ΄μ κΈΈμ΄κ° νμμΈ κ²½μ°, μ€κ°μ μμΉν μνλ²³μ νμμ΄λ©΄μ λλ¨Έμ§ μνλ²³μ λͺ¨λ μ§μμ¬μΌ νλ€.
ν°λ¦°λ둬μΌλ‘ λ§λ€ μ μλ κ²½μ°
- μ λ ₯ν λ¬Έμμ΄μ κΈΈμ΄κ° νμμΈ κ²½μ°, νμκ°μΈ μνλ²³ μ’ λ₯κ° 2κ° μ΄μμ΄λΌλ©΄ ν°λ¦°λ둬μΌλ‘ λ§λ€ μ μλ€.
- μ λ ₯ν λ¬Έμμ΄μ κΈΈμ΄κ° μ§μμΈ κ²½μ°, νμκ°μΈ μνλ²³ μ’ λ₯κ° 1κ° μ΄μμ΄λΌλ©΄ ν°λ¦°λ둬μΌλ‘ λ§λ€ μ μλ€.
ν°λ¦°λ둬μΌλ‘ λ§λλ λ°©λ²
- μνλ²³ λ³ κ°μλ₯Ό λ΄μ λ°°μ΄μ λ§λ λ€.
- ν΄λΉ λ°°μ΄μ μννλ©΄μ
- κ°μκ° νμμΈ κ²½μ°λ μ€κ°μ μμΉν΄μΌ νλ μνλ²³μ΄λ λ³λλ‘ μ μ₯νλ€.
- μνλ²³ κ°μ / 2 λ§νΌ μνλ₯Ό λλ©΄μ prefix μ suffix λ₯Ό λ§λ λ€.
- μ
λ ₯ν λ¬Έμμ΄μ΄
- νμμΈ κ²½μ°
- prefix + center + suffix
- μ§μμΈ κ²½μ°
- prefix + suffix
- νμμΈ κ²½μ°
#include <bits/stdc++.h>
using namespace std;
string input = "";
int alphabet[95] = {};
bool checkEven() {
bool isEven = input.length() % 2 == 0;
for (char c = 'A'; c <= 'Z'; c++) if (isEven && alphabet[c] % 2 != 0) return false;
return true;
}
bool checkOdd() {
bool isOdd = input.length() % 2 != 0;
if (!isOdd) return true;
int oddCnt = 0;
for (char c = 'A'; c <= 'Z'; c++) {
if (alphabet[c] % 2 != 0) oddCnt++;
if (oddCnt > 1) return false;
}
return true;
}
string palindrome() {
char center = ' ';
string prefix = "";
string suffix = "";
for (char c = 'A'; c <= 'Z'; c++) {
int size = alphabet[c];
if (size % 2 != 0) center = c;
for (int i = 0; i < size / 2; i++) {
prefix += c;
suffix = (c + suffix);
}
}
if (center != ' ') return prefix + center + suffix;
return prefix + suffix;
}
int main() {
cin >> input;
for (int i = 0; i < input.length(); i++) alphabet[input[i]]++;
if (!checkEven() || !checkOdd()) cout << "I'm Sorry Hansoo";
else cout << palindrome();
};
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ 3986] μ’μ λ¨μ΄ (0) | 2023.04.18 |
---|---|
[λ°±μ€ 1940] μ£Όλͺ½ (0) | 2023.04.17 |
[λ°±μ€ 9375] ν¨μ μ μ ν΄λΉ (0) | 2023.04.14 |
[λ°±μ€ 1620] λλμΌ ν¬μΌλͺ¬ λ§μ€ν° μ΄λ€μ (0) | 2023.04.12 |
[λ°±μ€ 9996] νκ΅μ΄ κ·Έλ¦¬μΈ λ μλ²μ μ μνμ§ (0) | 2023.04.04 |