문제풀이/백준oj
[백준OJ] 6996번 애너그램
Hyeon-Uk
2021. 7. 22. 20:12
반응형
https://www.acmicpc.net/problem/6996
6996번: 애너그램
첫째 줄에 테스트 케이스의 개수(<100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 100을 넘지 않는 단어가 공백으로 구분되어서 주어진다. 단어는 알파벳 소문자로만 이루어
www.acmicpc.net
-풀이-
1. A와 B를 입력받는다.
2. A와 B의 길이가 다르면, 순서를 바꾼다해도 못만들기때문에 NOT을 출력해준다.
3. A와 B를 돌면서 A와 B에 각 알파벳들이 몇번씩 나오는지 따로따로 체크해준다.
4. A와 B를 구성하는 각각의 알파벳 개수가 모두 일치하면 TRUE, 아니면 FALSE에 해당하는 답을 출력해준다.
-코드-
#include <iostream>
#include<algorithm>
#include<string>
using namespace std;
string a, b;
int n;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a >> b;
if (a.size() != b.size()) {
cout << a << " & " << b << " are NOT anagrams.\n";
}
else {
int cntA[26] = { 0 };
int cntB[26] = { 0 };
bool flag = true;
int len = a.size();
for (int j = 0; j < len; j++) {
cntA[a[j] - 'a']++;
cntB[b[j] - 'a']++;
}
for (int j = 0; j < 26; j++) {
if (cntA[j] != cntB[j]) {
flag = false;
break;
}
}
if (flag) {
cout << a << " & " << b << " are anagrams.\n";
}
else {
cout << a << " & " << b << " are NOT anagrams.\n";
}
}
}
return 0;
}
반응형