※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |