알고리즘/BOJ

[c/c++] BOJ 11328번 문제 - strfry

wonjun.Aden 2022. 2. 21. 21:30

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

 

13300번: 방 배정

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어

www.acmicpc.net

 

문제

문제 풀이

#include <bits/stdc++.h>
using namespace std;

//Strfry
//문자열 -> 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진 문자열일 뿐
//Strfry -> 입력된 문자열을 무작위로 재배열하여 새로운 문자열을 만들어냄.
int main(){

    ios::sync_with_stdio(0);
    cin.tie(0);
    //테스트 케이스의 수
    int n;
    
    string s1;
    string s2;
    bool ans;
    
    cin >> n;

    
    for(int i=0;i<n;i++){
        //테스트 케이스의 수마다 초기화 필요!
        ans=true;
        int arr1[26]= {0,};
        int arr2[26]= {0,};
        
        cin >> s1 >> s2;
        if(s1.size()!=s2.size()){
            ans=false;
        }else{
            for(char c : s1){
                arr1[c-'a']++;
            }
            for(char c : s2){
                arr2[c-'a']++;
            }
            for(char c : s2){
                if(arr2[c-'a']!=arr1[c-'a']){
                    ans=false;
                    break;
                }
            }
        }
        if(ans){
            cout << "Possible" << '\n';
        }
        else{
            cout << "Impossible"<< '\n';
        } 
    }
}

 

문제의 포인트

  • 테스트 케이스의 수마다 답에대한 초기화가 필요합니다.
  • 문자열을 배열에서 표현해야하기 때문에 소문자a는 아스키코드로 97이고 a를 빼줌으로서 0부터 26까지의 배열을 생성합니다.
반응형