작성
·
135
·
수정됨
0
답변 2
0
안녕하세요 kkim님 ㅎㅎ
odd가 없을 때를 고려 + 기본 타입을 바꾸시면 됩니다.
이렇게 한번 해보시겠어요?
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
string s, ret, inst;
map<char, int> mp;
int main() {
ios_base::sync_with_stdio(false);
char odd = 0; // char로 변경
cin >> s;
for (char c : s) {
mp[c]++;
}
for (auto i : mp) {
if (i.second % 2 == 0) {
for (int j = 0; j < i.second / 2; j++) {
ret += i.first;
}
} else {
if (odd != 0) {
cout << "I'm Sorry Hansoo";
return 0;
} else {
odd = i.first;
for (int j = 0; j < i.second / 2; j++) {
ret += i.first;
}
}
}
}
inst = ret;
// 홀수인 문자를 중간에 추가합니다.
if (odd != 0) {
ret += odd;
}
reverse(inst.begin(), inst.end());
ret += inst;
cout << ret;
return 0;
}
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
지금 해당 링크를 클릭하면 다른 링크로 넘어가는 버그가 있습니다. 밑에 한번 더 코드 올리겠습니다 문제는 1213번 팰린드롬 만들기입니다.
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
string s, ret;
map <char, int> mp;
int odd;
int main(){
ios_base::sync_with_stdio(false);
cin >> s;
for(char c : s){
mp[c] ++;
}
for(auto i : mp){
if(i.second % 2 == 0){
for(int j = 0 ; j < i.second / 2; j++){
ret += i.first;
}
}
else{
if(odd){
cout << "I'm Sorry Hansoo";
return 0;
}
else{
odd = i.first;
for(int j = 0 ; j< i.second / 2; j++){
ret += i.first;
}
}
}
}
string inst = ret;
ret += int(odd);
reverse(inst.begin(), inst.end());
ret += inst;
cout << ret;
return 0;
}
제가 실행을 시켜보면 AABB같이 홀수인 문자가 없는경우와 AAABB같이 홀수인 문자가 있는경우 모두 원래코드에서 정답이 프린트되는데, 제 원래 코드의 반례가 있다면 어떤것 인가요?