본문 바로가기
코테

백준 1213번 - 팰린드롬 만들기

by arirang_ 2023. 8. 24.

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