본문 바로가기

BOJ

[백준] 11328번 Strfry C++

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


int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int testCase;
	string te1, te2;
	cin >> testCase;
	int arr[26] = { 0, };
	int arr2[26] = { 0, };
	int count = 0;
	for (int i = 0; i < testCase; i++) {
		cin >> te1;
		cin>> te2;
		
		for (int i = 0; i < te1.size(); i++) {
			arr[te1[i] - 'a']++;
		}
		for (int i = 0; i < te2.size(); i++) {
			arr2[te2[i] - 'a']++;
		}
		for (int i = 0; i < 26; i++) {
			if (arr[i] > 0 && arr2[i] > 0) {
				if (arr[i] == arr2[i]) {
					count += arr[i];
				}
			}
		}
		if (count == te1.size()) {
			cout << "Possible" << "\n";
		}
		else {
			cout << "Impossible" << "\n";
		}

		for (int i = 0; i < 26; i++) {
			arr[i] = 0;
			arr2[i] = 0;
		}
		count = 0;
	}
	
}

 

문자를 입력하면

각각의 문자마다 배열에다가 a~z까지 맞는 게 있으면 한 개씩 추가해주는 형식으로 함

그다음 두 문자의 배열을 돌아보면서 같은 위치에 0이 아닌 숫자가 있으면 count에 그 인덱스에 있는 배열 값을 더해주는 형식으로 함

 

그 다음 count가 문자의 사이즈랑 똑같으면 가능 안 똑같으면 불가능으로 출력

ex) abcd bcda로 하면 count가 4가 나오고 count랑 글자의 사이즈랑 같음

ex) abcd bcdf count가 b c d 3개만 같으므로 count가 3이나 오고 글자의 사이즈는 4가 나와서 틀림

잘 놓칠 수 있는 거

ex) aa 같은 거 aa를 입력하면 arr [0] = 2인데 그냥 둘이 같으면 1을 더해주게 되면 무조건 size랑 같을 수가 없게 됨

 

 

'BOJ' 카테고리의 다른 글

[백준] 1406번 에디터 C++  (0) 2020.04.22
[백준] 1919번 애너그램 만들기 c++  (0) 2020.04.21
[백준] 1475번 방 번호 c++  (0) 2020.04.21
[백준] 13300 방 배정 c++  (0) 2020.04.20
[백준] 10807번 개수 세기 c++  (0) 2020.04.20