article thumbnail image
Published 2023. 1. 9. 20:01

문제 설명

https://www.acmicpc.net/problem/11328

 

11328번: Strfry

C 언어 프로그래밍에서 문자열(string)은 native한 자료형이 아니다. 사실, 문자열은 그저, 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진 문자열일 뿐이다. 하지만 프로그래

www.acmicpc.net

strfry 함수는 입력된 문자열을 무작위로 재배열하여 새로운 문자열을 만들어 내는 함수이다

 

두 개의 문자열이 주어졌을 때, 2번째 문자열이 1번째 문자열에 strfry 함수를 적용하여 얻어질 수 있으면 Possible 출력

얻을 수 없으면 Impossible 출력하기

 

문제 풀이법

strfry 함수를 적용하여 얻을 수 있다는 말은, 다시 말하면 문자열1과 문자열2가 사용된 알파벳이 모두 같아야 한다는 소리이다

 

우선 총 n번의 테스트 케이스가 주어지므로 제일 겉에 while문을 둔다

문자열을 입력받은 후, 알파벳의 개수를 담을 배열을 선언해 문자열1에서는 +1을 하면서 알파벳이 얼마나 담겼는지 저장하고,

문자열2에서는 -1을 하면서 문자열1에서 담긴 알파벳을 빼도록 한다

 

이후 배열에 남아있는 수가 0이 아니면, 문자열 1과 문자열 2는 같은 알파벳을 사용한것 이 아니므로 Impossible을 출력,

그렇지 않고 0만 있다면 Possible을 출력한다 

 

소스 코드

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    
    while (n > 0)
    {
        string str1, str2;
        int arr[26] = { 0 };
        
        cin >> str1 >> str2;
        
        for (int i = 0; i < str1.size(); i++)
            arr[str1[i] - 'a']++;
        for (int i = 0; i < str2.size(); i++)
            arr[str2[i] - 'a']--;
        
        int flag = 1;
        for (int i = 0; i < 26; i++)
        {
            if (arr[i] != 0)
            {   
                flag = -1;
                break;
            }
        }
        if (flag == 1)
            printf("Possible\n");
        else
            printf("Impossible\n");
        
        n--;
    }
    
    return 0;
}

'Algorithm Study' 카테고리의 다른 글

[백준] 1406 에디터  (0) 2023.01.10
[백준] 1919 애너그램 만들기  (0) 2023.01.09
[백준] 13300 방 배정  (0) 2023.01.09
[백준] 10807 개수 세기  (0) 2023.01.09
[백준] 3273 두 수의 합  (0) 2023.01.06
복사했습니다!