Skip to content

Commit

Permalink
BOJ-EX: 5/19/2024, 4:42:10 PM
Browse files Browse the repository at this point in the history
  • Loading branch information
fkdl0048 committed May 19, 2024
1 parent d183402 commit fb78ff7
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 1 deletion.
40 changes: 40 additions & 0 deletions 1213번: 팰린드롬 만들기/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 1213번: 팰린드롬 만들기 - <img src="https://static.solved.ac/tier_small/8.svg" style="height:20px" /> Silver III

<!-- performance -->

<!-- 문제 제출 후 깃허브에 푸시를 했을 때 제출한 코드의 성능이 입력될 공간입니다.-->

<!-- end -->

## 문제

[문제 링크](https://boj.kr/1213)


<p>임한수와 임문빈은 서로 사랑하는 사이이다.</p>

<p>임한수는 세상에서 팰린드롬인 문자열을 너무 좋아하기 때문에, 둘의 백일을 기념해서 임문빈은 팰린드롬을 선물해주려고 한다.</p>

<p>임문빈은 임한수의 영어 이름으로 팰린드롬을 만들려고 하는데, 임한수의 영어 이름의 알파벳 순서를 적절히 바꿔서 팰린드롬을 만들려고 한다.</p>

<p>임문빈을 도와 임한수의 영어 이름을 팰린드롬으로 바꾸는 프로그램을 작성하시오.</p>



## 입력


<p>첫째 줄에 임한수의 영어 이름이 있다. 알파벳 대문자로만 된 최대 50글자이다.</p>



## 출력


<p>첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.</p>



## 소스코드

[소스코드 보기](팰린드롬%20만들기.cpp)
57 changes: 57 additions & 0 deletions 1213번: 팰린드롬 만들기/팰린드롬 만들기.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/* ************************************************************************** */
/* */
/* ::: ::: ::: */
/* Problem Number: 1213 :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fkdl4878 <boj.kr/u/fkdl4878> +#+ +#+ +#+ */
/* +#+ +#+ +#+ */
/* https://boj.kr/1213 #+# #+# #+# */
/* Solved: 2024/05/19 15:54:03 by fkdl4878 ### ### ##.kr */
/* */
/* ************************************************************************** */

#include <bits/stdc++.h>
using namespace std;

int main(){
string s;
map<char, int> m;

cin >> s;

for (char c : s){
m[c]++;
}

int odd_cnt = 0;
char odd_char;
for (auto it : m){
if (it.second % 2 != 0){
odd_cnt++;
odd_char = it.first;
}
}

if (odd_cnt > 1){
cout << "I'm Sorry Hansoo \n";
return 0;
}

string half = "";
for (auto it : m){
half += string(it.second / 2, it.first);
}

sort(half.begin(), half.end());
string palindrome = half;
if (odd_cnt == 1){
palindrome += odd_char;
}

reverse(half.begin(), half.end());
palindrome += half;

cout << palindrome;

return 0;
}
Binary file not shown.
6 changes: 5 additions & 1 deletion 2024/CodingTest/SummaryNote.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,8 @@

### 알파벳 문제

대부분 알파벳 문제는 아스키 코드를 사용하여 풀 수 있다.
대부분 알파벳 문제는 아스키 코드를 사용하여 풀 수 있다.

### 경우의 수

경우의 수는 곱하기

0 comments on commit fb78ff7

Please sign in to comment.