알고리즘 문제풀이/백준

[백준/BOJ] 1919번 애너그램 만들기 (C++)

노력의천재 2021. 9. 20. 19:45

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

 

1919번: 애너그램 만들기

두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs

www.acmicpc.net

처음에 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;
}