※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts