사실 오늘 두번째 문젠데, 아나그램?(Anagram) 이라는 것이다. Anagram이란 두 문자열이 알파벳의 나열 순서는 다르지만, 그 구성이 일치하면 두 단어를 아나그램이라고 한다.
사실 이 문제는 엄청 간단하고 쉽게? 풀었다. 지금까지 아스키코드를 이용한 배열 문제를 많이,,그것도 엄청 많이 풀었기 때문에, 배열 4개로( char형 2개, int형 2개 )로 간단하게 풀었다.
코드는 다음과 같다.
#include<iostream>
using namespace std;
int main(){
char word_1[101], word_2[101];
int check_1[53]={0,}, check_2[53]={0,};
cin>>word_1;
cin>>word_2;
for(int i =0; word_1[i]!='\0'; i++){
if(word_1[i]>64&&word_1[i]<91){
check_1[word_1[i]-65]++;
}
else{
check_1[word_1[i]-97]++;
}
}
for(int i =0; word_2[i]!='\0'; i++){
if(word_2[i]>64&&word_2[i]<91){
check_2[word_2[i]-65]++;
}
else{
check_2[word_2[i]-97]++;
}
}
for(int i =0; i< 52;i++){
if(check_1[i]==check_2[i]){
continue;
}
else{
cout<<"NO";
exit();
}
}
cout<<"YES";
}
생각보다 모범답안 코드랑 엄청 유사해서 깜짝놀랐다.. 저기 보이는 exit(0)까지 똑같다 ㅎㅎ뿌듯