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
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 14563 - 완전수(중앙대학교 CodeRace 2017) (0) | 2018.07.27 |
---|---|
백준] 2564 - 경비원(KOI 2007 지역본선 초등부) (0) | 2018.07.23 |
백준] 9506 - 약수들의 합(ACM-ICPC Regionals) (0) | 2018.07.19 |
백준] 4539 - 반올림(ACM-ICPC Regionals) (0) | 2018.07.16 |
백준] 2740 - 행렬 곱셈 (0) | 2018.07.13 |