문제
"맞았습니다."코드
#include <bits/stdc++.h>
using namespace std;
int T;
void func(string a, string b){
int cntA[35] = {};
int cntB[35] = {};
for(int i = 0; i < a.length(); i++){
cntA[a[i]-97]++;
}
for(int i = 0; i < b.length(); i++){
cntB[b[i]-97]++;
}
string answer = "Possible\n";
for(int i = 0; i < 79-61+1; i++){
if(cntA[i] != cntB[i]){
answer = "Impossible\n";
break;
}
}
cout << answer;
}
void input(){
cin >> T;
string a, b;
for(int i = 0; i < T; i++){
cin >> a >> b;
func(a, b);
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
input();
return 0;
}
리뷰
소문자 알파벳 개수가 동일한지 비교하면 된다.
소문자 알파벳과 ascii 코드를 매칭하기 위해 문자열에서 97을 뺐다.
소문자 a에서 97을 빼면 0이 나온다.
소문자 a부터 소문자 z까지 아스키코드는 연속적이니까 이렇게 인덱스로 매칭 할 수 있다.
단어에서 a의 개수를 배열의 0인덱스의 값에 저장했다. b의 개수는 배열의 1인덱스 값에 저장했다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
키로거 백준 5397 c++ (0) | 2021.11.22 |
---|---|
에디터 list, queue로 2가지로 풀어본 코드 백준 1406번 c++ (0) | 2021.11.22 |
두 수의 합 백준 3273번 c++ (0) | 2021.11.22 |
방 번호 백준 1475 c++ (0) | 2021.11.21 |
알파벳 개수 백준 10808번 (0) | 2021.11.21 |