반응형
간단한 문자열 처리 문제였습니다.
풀이방법
1. 입력 받은 두개의 문자열 a,b의 알파벳을 세줍니다.
2. 세준 결과가 같다면 위치를 바꿔서 서로의 문자열로 만들 수 있습니다. 즉 애너그램이 가능합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int * getAlpha(string &a, int arr[]){
for(int i = 0; i < 26; i++) arr[i] = 0;
for(int i = 0; i < a.size(); i++) arr[a[i]-'a']++;
return arr;
}
bool isAnagram(int *alpha,int *alpha2){
for(int i = 0; i < 26; i++)
if(alpha[i] != alpha2[i])
return false;
return true;
}
int main(){
int testCase;
cin >> testCase;
while(testCase--){
string a,b;
cin >> a >> b;
int cnt[26], cnt2[26];
int *alpha = getAlpha(a,cnt);
int *alpha2 = getAlpha(b,cnt2);
if(isAnagram(alpha,alpha2))
cout << a << " & " << b << " are anagrams.\n";
else
cout << a << " & " << b << " are NOT anagrams.\n";
}
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 4470번 : 줄번호 (0) | 2021.02.16 |
---|---|
(C++) - 백준(BOJ) 1120번 : 문자열 (0) | 2021.02.15 |
(C++) - 백준(BOJ) 10174번 : 팰린드롬 (0) | 2021.02.13 |
(C++) - 백준(BOJ) 13163번 : 닉네임에 갓 붙이기 (0) | 2021.02.12 |
(C++) - 백준(BOJ) 1871번 : 좋은 자동차 번호판 (0) | 2021.02.10 |