알고리즘 문제풀이/백준
[백준/BOJ] 1919번 애너그램 만들기 (C++)
노력의천재
2021. 9. 20. 19:45
https://www.acmicpc.net/problem/1919
처음에 map을 2개 정의해서 활용해서 풀이를 시도했는데, map의 값을 빼주는 과정에서 뭔가 내부적으로 동작되는 방식(?)에 의해 원하는대로 작동을 안하는 것 같았다. 그래서 배열 2개를 이용하여 a~z까지 서로 값이 다른 경우 값을 빼주는 방식으로 해결했다.
#include <iostream>
#include <algorithm>
using namespace std;
int check1[26], check2[26];
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
string str1, str2;
cin >> str1 >> str2;
for(int i = 0; i < str1.size(); i++) {
check1[str1[i] - 'a']++;
}
for(int i = 0; i < str2.size(); i++) {
check2[str2[i] - 'a']++;
}
int answer = 0;
for(int i = 0; i < 26; i++) {
if(check1[i] != check2[i]) {
answer += abs(check1[i] - check2[i]);
}
}
cout << answer;
}