Computer Science/Algorithm Problem
백준] 11328 - Strfry(CCPC 2014)
TwinParadox
2018. 7. 22. 21:52
728x90
시간 제한 : 2초
메모리 제한 : 256MB
입력
입력의 첫 번째 줄은 테스트 케이스의 수 0 < N < 1001 이다.
각각의 테스트 케이스는 하나의 줄에 영어 소문자들로만 이루어진 두 개의 문자열이 한 개의 공백으로 구분되어 주어진다. 각각의 문자열의 길이는 최대 1000 이다.
출력
각각의 테스트 케이스에 대해, 2번째 문자열이 1번째 문자열에 strfry 함수를 적용하여 얻어질 수 있는지의 여부를 "Impossible"(불가능) 또는 "Possible"(가능)으로 나타내시오. (따옴표는 제외하고 출력한다.)
소스코드
#include <iostream> #include <string> using namespace std; int main(void) { int n; cin >> n; while (n--) { string source, dest; int slen, dlen; int sArr[26] = { 0, }, dArr[26] = { 0, }; bool same = true; cin >> source >> dest; slen = source.length(); dlen = dest.length(); if (slen != dlen) cout << "Impossible\n"; else { for (int i = 0; i < slen; i++) { sArr[(int)(source[i] - 'a')]++; dArr[(int)(dest[i] - 'a')]++; } for (int i = 0; i < 26; i++) { if (sArr[i] != dArr[i]) { same = false; break; } } if (same) cout << "Possible\n"; else cout << "Impossible\n"; } } }
Tip
문자열 처리에 능숙하면 쉽게 풀 수 있다. 문자열 길이 비교, 문자열에 있는 알파벳의 수 비교를 통해 분류하면 된다.
728x90