Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 1919 - 애너그램 만들기(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/1919
두 문자열에서 최소한의 문자를 없애 애너그램으로 만드는 문제입니다.
문자를 지우는 경우는 2가지 입니다.
1. 알파벳이 둘 다 있지만 개수가 다른경우
2. 한 문자열에만 알파벳이 있는 경우
1번째 경우에는 알파벳 개수의 차이만큼만 없애주면 되고, 2번째 경우에는 없는 모든 알파벳을 없애줘야합니다.
자세한 것은 코드를 참고해주세요
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <cmath>
#include <string>
using namespace std;
string x, y;
int alpha1[26], alpha2[26];
int check1[26], check2[26];
int ans;
int main(){
cin.tie(0);
cout.tie(0);
cin >> x >> y;
for(int i = 0; i < x.size(); i++){
check1[x[i] - 'a'] = 1;
alpha1[x[i] - 'a']++;
}
for(int i = 0; i < y.size(); i++){
check2[y[i] - 'a'] = 1;
alpha2[y[i] - 'a']++;
}
for(int i = 0; i < 26; i++){
if(check1[i] && check2[i]){
if(alpha1[i] != alpha2[i]) ans += abs(alpha1[i] - alpha2[i]);
}
else{
ans += (alpha1[i] + alpha2[i]);
}
}
cout << ans;
return 0;
}
질문 및 조언은 댓글을 남겨주세요
'백준' 카테고리의 다른 글
백준 1213 - 펠린드롬 만들기(C++) (0) | 2023.06.11 |
---|---|
백준 2935 - 소음(C++) (0) | 2023.06.09 |
백준 5218 - 알파벳 거리(C++) (2) | 2023.06.09 |
백준 1652 - 누울 자리를 찾아라(C++) (0) | 2023.06.04 |
백준 1225 - 이상한 곱셈(C++) (0) | 2023.06.03 |