※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 23327번 문제인 Numbersrebmun이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4141
4141번: Numbersrebmun
Anna and Bob are starting up a new high-tech company. Of course, one of their key considerations is choosing a good name for the company. Palindromes are cool. (A palindrome is a word that is the same when reversed, like the names of our two entrepreneurs.
www.acmicpc.net
주어지는 문자열의 문자들을 각각 대응되는 숫자로 바꾸었을 때 해당 문자열이 팰린드롬(회문)이 되는지를 확인하는 문제이다.
각 문자를 숫자로 대응시키는 배열을 만들어 문자열을 숫자열로 바꿔주고 해당 문자열이 팰린드롬인지를 판단해 문제를 해결하자. 팰린드롬 판단은 문자열을 뒤집어(algorithm 헤더의 reverse를 이용하면 뒤집어준다) 원래의 문자열과 같은지를 확인하는 것으로 간단하게 할 수 있다.
대소문자를 구분하지 않고 구현하기 위해 글쓴이는 toupper 함수를 이용하여 모든 문자를 일괄적으로 대문자로 처리하였다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int N;
char arr[128];
string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
arr['A'] = arr['B'] = arr['C'] = '2';
arr['D'] = arr['E'] = arr['F'] = '3';
arr['G'] = arr['H'] = arr['I'] = '4';
arr['J'] = arr['K'] = arr['L'] = '5';
arr['M'] = arr['N'] = arr['O'] = '6';
arr['P'] = arr['Q'] = arr['R'] = arr['S'] = '7';
arr['T'] = arr['U'] = arr['V'] = '8';
arr['W'] = arr['X'] = arr['Y'] = arr['Z'] = '9';
cin >> N;
while (N--) {
cin >> s;
for (auto& l : s) {
l = arr[toupper(l)];
}
string ss = s;
reverse(ss.begin(), ss.end());
if (s == ss) cout << "YES\n";
else cout << "NO\n";
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 5555 // C++] 반지 (0) | 2023.02.26 |
---|---|
[BOJ 16480 // C++] 외심과 내심은 사랑입니다 (0) | 2023.02.25 |
[BOJ 24767 // C++] Beehives (0) | 2023.02.25 |
[BOJ 4542 // C++] Blue Jeans (0) | 2023.02.25 |
[BOJ 27535 // C++] 제주 초콜릿 지키기 (0) | 2023.02.25 |