문제 링크
https://www.acmicpc.net/problem/1919
문제 정보
입력
첫째 줄과 둘째 줄에 영어 단어가 소문자로 주어진다. 각각의 길이는 1,000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어진다.
출력
첫째 줄에 답을 출력한다.
풀이
string 자료형을 통해 문자열 2개를 입력 받은 후에 각각 알파벳의 개수를 배열에 저장한다. 그리고 알파벳의 개수가 다른 만큼 더해주면 애너그램 관계에 있도록 만들기 위해 제거해야 하는 최소 개수의 문자 수가 나온다! 두 번째 문자열의 알파뱃 개수가 더 많아서 단순하게 차이를 계산하면 음수가 나올 수 있으므로 abs() 함수를 사용해서 절댓값으로 계산한다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
string s1, s2;
cin >> s1 >> s2;
int alphabet1[26] = {};
int alphabet2[26] = {};
for (int i = 0; i < s1.length(); i++) {
alphabet1[s1[i] - 'a']++;
}
for (int i = 0; i < s2.length(); i++) {
alphabet2[s2[i] - 'a']++;
}
int ans = 0;
for (int i = 0; i < 26; i++) {
if (alphabet1[i] != alphabet2[i]) {
ans += abs(alphabet1[i] - alphabet2[i]);
}
}
cout << ans;
return 0;
}