알고리즘 모음(C++)

백준 10176 - Opposite Words(C++) 본문

백준

백준 10176 - Opposite Words(C++)

공대생의 잡다한 사전 2022. 8. 21. 18:23

문제 링크입니다. https://www.acmicpc.net/problem/10176

 

10176번: Opposite Words

The first line of input will be a positive integer, n, indicating the number of problem sets that follow. Following the positive integer will be n text strings, one per line.

www.acmicpc.net

문자열을 사용한 문제입니다.

 

자세한 것은 코드를 참고해주세요

#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>

#define P pair<long long, long long>
#define PP pair<P, int>
#define F first
#define S second

using namespace std;

int N;
string arr;

bool solve() {
	// 전부 대문자로 바꿔준다.
	string New;
	for(int i = 0; i < arr.size(); i++){
		if(arr[i] >= 'a' && arr[i] <= 'z'){
			New += arr[i] - 'a' + 'A';
		}
		if(arr[i] >= 'A' && arr[i] <= 'Z'){
			New += arr[i];
		}
	}
	// 전부 정렬해준다.
	sort(New.begin(), New.end());
	// 정렬해준 순서대로 opposite한 단어를 찾는다.
	string Re;
	for(int i = 0; i < New.size(); i++){
		Re += 'Z' - (New[i] - 'A');
	}
	sort(Re.begin(), Re.end());
	for(int i = 0; i < New.size(); i++){
		if(Re[i] != New[i]) return false;
	}
	return true;
}
	 

int main() {
	cin.tie(0);
	cout.tie(0);
	cin >> N;
	for(int i = 1; i <= N; i++){
		cin >> arr;
		if(solve()) cout << "Yes" << "\n";
		else cout << "No" << "\n";
	} 
	return 0;
}

 

 

질문 및 조언 댓글 남겨주세요