Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이분탐색
- 백준
- 후니의 쉽게 쓴 시스코 네트워킹
- 동적계획법
- swea
- 유니온 파인드
- 시뮬레이션
- Effective Java
- 구현
- 그리디
- Network
- BFS
- Kotlin
- 세그먼트 트리
- JUnit 5
- mst
- 프로그래머스
- CS
- 알고리즘
- 문자열
- 백트래킹
- 완전탐색
- dfs
- 플로이드-와샬
- 스택
- 위상정렬
- 에라토스테네스의 체
- java
- 수학
- 투 포인터
Archives
반갑습니다!
[백준] 1213 팰린드롬 만들기 본문
풀이
문자열을 입력받은 뒤, 각 알파벳의 개수를 세어준다. 만약 모든 알파벳의 갯수가 짝수라면 팰린드롬이 가능하다. 하지만 알파벳의 갯수가 홀수일 경우가 2개 이상이라면 팰린드롬을 만들 수 없다. 그 외의 경우에는 모두 팰린드롬을 만들 수 있다.
정답은 사전 순서 중 가장 앞 순서에 오는 것이다. 사전 상 가장 앞에 오는 팰린드롬은 어렵지 않게 구할 수 있다. 이 경우는 갯수가 홀 수인 알파벳이 있을 때와 없을 때로 나뉘는데, 모든 알파벳의 갯수가 짝수인 경우는 'A' 부터 'Z' 순서로 미리 세어 둔 알파벳 갯수의 절반 만큼을 사용해서 문자열을 만들고, 해당 문자열을 뒤집은 문자열과 함께 출력해주면 된다. 그리고 한 개의 알파벳이 홀 수인 경우는 그 알파벳을 문자열과 뒤집은 문자열 사이에 넣어서 출력하면 된다.
코드
C++
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <algorithm> | |
using namespace std; | |
string name; | |
int alpha[26]; | |
int main() { | |
ios_base::sync_with_stdio(0); | |
cin.tie(0); | |
cin >> name; | |
for (char c : name) | |
alpha[c - 'A']++; | |
int odd_cnt = 0; | |
bool is_possible = true; | |
for (int i = 0; i < 26; i++) { | |
if (alpha[i] % 2 == 1) odd_cnt++; | |
if (odd_cnt > 1) { | |
is_possible = false; | |
break; | |
} | |
} | |
if(!is_possible) cout << "I'm Sorry Hansoo\n"; | |
else { | |
string ans = ""; | |
char odd = 'a'; | |
for (int i = 0; i < 26; i++) { | |
for (int j = 0; j < alpha[i] / 2; j++) | |
ans += (char)(i + 'A'); | |
if (alpha[i] % 2 == 1) odd = i + 'A'; | |
} | |
string rev = ans; | |
reverse(rev.begin(), rev.end()); | |
if (odd == 'a') cout << ans + rev << '\n'; | |
else cout << ans + odd + rev << '\n'; | |
} | |
return 0; | |
} |
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 11723 집합 (0) | 2021.09.02 |
---|---|
[백준] 14438 수열과 쿼리 17 (0) | 2020.12.04 |
[백준] 5676 음주 코딩 (0) | 2020.12.02 |
[백준] 2268 수들의 합 (0) | 2020.11.30 |
[백준] 1275 커피숍2 (0) | 2020.11.29 |