
https://www.acmicpc.net/problem/1919
두 개의 문자열이 주어졌을 때, 두 문자열을 애너그램(anagram)으로 만들기 위해 제거해야 할 문자의 총 개수를 구하는 문제입니다.
예시
입력:aabbcc xxyybb출력:
8두 문자열을 "bb"로 만들 수 있으므로 총 8개의 문자를 제거해야 합니다.
애너그램은 두 문자열에서 각 알파벳의 개수가 같아야 합니다.
그래서 핵심은 각 문자열에서 알파벳 빈도수를 세고,
그 차이를 전부 더하는 방식으로 해결할 수 있습니다.
first_counter, second_counter를 선언합니다. (길이 26)ord() 함수를 이용해 각 문자에 해당하는 인덱스를 계산하고, 알파벳 개수를 카운팅합니다.first = input()
second = input()
first_counter = [0] * 26
second_counter = [0] * 26
ans = 0
# 알파벳 개수 세기
for i in first:
first_counter[ord(i) - 97] += 1
for i in second:
second_counter[ord(i) - 97] += 1
# 차이 계산
for i in range(26):
ans += abs(first_counter[i] - second_counter[i])
print(ans)
ord('a')는 97이므로, 'a'부터 'z'까지는ord(문자) - 97을 통해 0~25의 인덱스로 매핑할 수 있다.
abs(x)를 사용하면 두 값의 차이의 절댓값을 구할 수 있다.