반응형
6996번: 애너그램
첫째 줄에 테스트 케이스의 개수(<100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 100을 넘지 않는 단어가 공백으로 구분되어서 주어진다. 단어는 알파벳 소문자로만 이루어
www.acmicpc.net
간단한 문자열 처리 문제였습니다.
풀이방법
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번 : 문자열 (1) | 2021.02.15 |
(C++) - 백준(BOJ) 10174번 : 팰린드롬 (0) | 2021.02.13 |
(C++) - 백준(BOJ) 13163번 : 닉네임에 갓 붙이기 (0) | 2021.02.12 |
(C++) - 백준(BOJ) 1871번 : 좋은 자동차 번호판 (0) | 2021.02.10 |