728x90
[목적]
Anagram : 길이가 같은 두 문자열이 알파벳의 나열 순서는 다르지만 알파벳 구성(대/소문자 구분)이 일치하면 두 단어는 Anagram이라 한다.
두 문자열을 입력받아 Anagram이 맞으면 YES를 아니면 NO를 출력한다.
[입력 예제]
AbaAeCe
baeeACA
[출력 예제]
YES
첫 번째 문자열엔 'A'가 2개, 'C'가 1개, 'a'가 1개, 'b'가 1개, 'e'가 2개 있으며 두 번째 문자열도 그 개수가 같다.
그러므로 두 문자열은 Anagram 조건에 충족하여 YES를 출력하였다.
[코드]
#include <iostream>
using namespace std;
int main(void) {
string a, b;
int res = 1;
cin >> a;
cin >> b;
for(int i=0; i<a.length(); i++){
for(int j=0; j<a.length(); j++){
if(a[i]==b[j]){
//a[i] = '0';
b[j] = '0';
break;
}
}
}
for(int i=0; b[i]!='\0'; i++){
if(b[i]!='0'){
res = 0;
break;
}
}
if(res) cout << "YES";
else cout << "NO";
return 0;
}
1. 문자열 2개를 입력받는다.
2. 문자열 길이만큼의 2중 for문을 이용하여 a[i]번째와 b[j]번째가 일치하면 a또는 b의 해당 번째에 0을 넣어준다.
3. 일치했다면 안쪽 for문을 빠져나오며 문자열 길이만큼 반복해준다.
4. for문을 이용하여 b[i]번째가 모두 0이면 Anagram이니 res값이 1로 고정이고, 만약 하나라도 0이 아닐 시 Anagram이 아니니 res값을 0으로 바꿔주며 for문을 빠져나온다.
4. res값이 1이면 YES를 출력, 아니면 NO를 출력한다.
[실행결과]
728x90
반응형
'문제풀이 > C++' 카테고리의 다른 글
[C++] 층간소음 (0) | 2021.01.05 |
---|---|
[C++] 선생님 퀴즈 (0) | 2021.01.02 |
[C++] 소수의 개수 (0) | 2021.01.01 |
[C++] 뒤집은 소수 (0) | 2020.12.30 |
[C++] 가장 많이 사용된 자릿수 (0) | 2020.12.29 |