[백준/BOJ] 백준 11328번 : Strfry
2020. 8. 8. 01:48ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/11328
두 문자열에 등장하는 알파벳의 개수를 세서 만약 어떤 알파벳의 개수가 다르다면 어떤 문자열의 문자들을 재배열하여도 다른 문자열로 만들 수 없다. 또한 두 문자열의 길이가 다르면 알파벳 개수를 셀 필요 없이 무조건 불가능이다.
코드
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n;
string input1, input2;
int input1_cnt[26];
int input2_cnt[26];
cin >> n;
for (int t = 0; t < n; t++)
{
memset(input1_cnt, 0, sizeof(input1_cnt));
memset(input2_cnt, 0, sizeof(input2_cnt));
cin >> input1 >> input2;
//두 문자열의 개수가 다르면 어떤 문자열의 문자들을 재배열 하여도 다른 문자열로 만들 수 없다
if (input1.size() != input2.size())
{
cout << "Impossible" << "\n";
continue;
}
//각 문자열에 등장한 알파벳의 개수를 센다
for (int i = 0; i < input1.size(); i++)
{
input1_cnt[input1[i] - 'a']++;
}
for (int i = 0; i < input2.size(); i++)
{
input2_cnt[input2[i] - 'a']++;
}
//어떠한 알파벳의 개수가 다르다면
//어떤 문자열의 문자들을 재배열 하여도 다른 문자열로 만들 수 없다
for (int i = 0; i < 26; i++)
{
if (input1_cnt[i] != input2_cnt[i])
{
cout << "Impossible" << "\n";
break;
}
//알파벳의 개수가 다른것이 없을때
if (i == 25)
{
cout << "Possible" << "\n";
}
}
}
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 1475번 : 방 번호 (0) | 2020.08.08 |
---|---|
[백준/BOJ] 백준 13300번 : 방 배정 (0) | 2020.08.08 |
[백준/BOJ] 백준 10807번 : 개수 세기 (0) | 2020.08.08 |
[백준/BOJ] 백준 10808번 : 알파벳 개수 (0) | 2020.08.08 |
[백준/BOJ] 백준 14891번 : 톱니바퀴 (0) | 2020.08.07 |