일단 이 문제를 처음 봤을때, 단순 무식하게 반복문 돌리면 되는거 아니야? 생각하고 첫번째 문자열의 첫번째 문자부터 다 비교하려고 했다. 뭐 그렇게 해도되겟지만,, 문자열 길이가 n이라고 치면 시간이 n^2이 되기 때문에 비효율이라고 생각은 했다.
로컬에선 돌아갔는데 문제에서는 틀렸다고 나왔다 그래서 다른 사람 소스코드를 참고했다;;;;
혹시나 소스코드 보고 피드백있으면 편하게 댓글 달아주면 감사하겠다.
#include<iostream>
#include<string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N; // 몇번 시행할지
bool T; // 참 거짓을 판별하기 위한 변수
string str1, str2; // 입력받을 문자열
int src[26], des[26]; // 입력받은 문자열들의 알파벳 갯수 세기위한 배열들
cin >> N;
while (N--) {
T = true; // 변수 초기화
for (int i = 0; i < 26; i++) {
src[i] = 0;
des[i] = 0;
} //변수 초기화
cin >> str1 >> str2;
if (str1.length() != str2.length()) { // 두 문자열의 길이가 다를경우 실패
T = false;
}
else {
for (int i = 0; i < str1.length(); i++) {
src[str1[i] - 'a']++;
des[str2[i] - 'a']++;
} // 문자열의 해당 알파벳에 해당하는 인덱스를 올려준다.
for (int i = 0; i < 26; i++) {
if (src[i] != des[i]) {
T = false;
break;
}
} // 반복문을 돌면서 하나라도 같지 않으면 실패
}
if (T) {
cout << "Possible" << endl;
}
else {
cout << "Impossible" << endl;
}
}
}
'Development > BOJ' 카테고리의 다른 글
[BOJ] 백준 10808번 : 알파벳 개수 C++ : 아주정은 (0) | 2020.02.20 |
---|---|
[BOJ] 백준 5430번 : AC C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 13300번 : 방 배정 C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 10804번 : 카드 역배치 C++ : 아주정은 (0) | 2020.02.20 |
[BOJ] 백준 1963번 : 소수 경로 C++ : 아주정은 (0) | 2020.02.20 |