https://www.acmicpc.net/problem/1213
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
map<char, int> mp;
string name;
int change,center;
int main(){
cin >> name;
for(int i=0; i<name.size(); i++){
mp[name[i]]++;
}
int j=0;
for(auto it : mp){
int cnt = it. second;
while(cnt >=2){
name[j] = it.first;
name[name.size()-1-j] = it.first;
j++;
cnt-=2;
}
if(cnt ==1){
change++;
if(change >1){
name = "I'm Sorry Hansoo";
break;
}
center = name.size()/2;
name[center] = it.first;
}
}
cout << name << "\n";
return 0;
}
- couting하는 문제이므로 맵 or 배열을 이용한다.
(나는 map을 이용하였다, map은 이미 정렬되어있기 때문이다.)
- 문자가 홀수인 것이 2개이상이면 팰린드롬을 만들 수 없다.
(change의 수가 1보다 크면 name에 I'm Sorry Hansoo"를 저장하고 반복문을 빠져나온다)
'코테' 카테고리의 다른 글
백준 3986번 - 좋은 단어 (1) | 2023.08.25 |
---|---|
백준 1940번-주몽 (0) | 2023.08.25 |
백준 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2023.08.24 |
백준 2559번 - 수열 (0) | 2023.08.22 |
백준 11655번 - ROT13 (0) | 2023.08.19 |