※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1622번 문제인 공통 순열이다.
문제는 아래 링크를 확인하자.

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

 

1622번: 공통 순열

알파벳 소문자로 이루어진 두 문자열 a와 b에 대해, a의 부분 수열의 순열이자 b의 부분 수열의 순열이 되는 가장 긴 문자열 x를 구하여라.

www.acmicpc.net

주어지는 두 문자열의 각 문자의 개수를 세주고, 'a'부터 'z'까지 순서대로 돌아보면서 두 문자열에 공통으로 있는 개수를 출력해 문제를 해결하자.

 

이 문제에서는 입력으로 길이 0의 빈 문자열이 주어질 수 있으므로 getline 등을 통해 줄단위 입력을 받아 문제를 해결해주자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

string s1, s2;
int cnt1[128], cnt2[128];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	while (getline(cin, s1) && getline(cin, s2)) {
		memset(cnt1, 0, sizeof(cnt1));
		memset(cnt2, 0, sizeof(cnt2));
		for (auto& l : s1)cnt1[l]++;
		for (auto& l : s2)cnt2[l]++;

		for (char c = 'a'; c <= 'z'; c++) {
			int cnt = min(cnt1[c], cnt2[c]);
			while (cnt--) cout << c;
		}
		cout << '\n';
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 26906 // C++] Vikingahackare  (0) 2022.12.30
[BOJ 26938 // C++] Lamps  (0) 2022.12.30
[BOJ 26939 // C++] Biblioteket  (0) 2022.12.30
[BOJ 26940 // C++] Chokladkartongen  (0) 2022.12.30
[BOJ 13703 // C++] 물벼룩의 생존확률  (0) 2022.12.29

+ Recent posts