[Baekjoon/Python] 1919. 애너그램 만들기

mj·2025년 6월 16일

코딩테스트문제

목록 보기
55/70

📌 문제 설명

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

두 개의 문자열이 주어졌을 때, 두 문자열을 애너그램(anagram)으로 만들기 위해 제거해야 할 문자의 총 개수를 구하는 문제입니다.

예시
입력:

aabbcc  
xxyybb

출력:

8

두 문자열을 "bb"로 만들 수 있으므로 총 8개의 문자를 제거해야 합니다.


🧠 문제 접근 방법

애너그램은 두 문자열에서 각 알파벳의 개수가 같아야 합니다.
그래서 핵심은 각 문자열에서 알파벳 빈도수를 세고,
그 차이를 전부 더하는 방식으로 해결할 수 있습니다.

💡 풀이 순서

  1. 알파벳 개수를 세기 위한 배열 first_counter, second_counter를 선언합니다. (길이 26)
  2. ord() 함수를 이용해 각 문자에 해당하는 인덱스를 계산하고, 알파벳 개수를 카운팅합니다.
  3. 두 문자열의 알파벳 개수 차이의 절댓값을 모두 더해 출력합니다.

💻 파이썬 코드

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)

✨ 마무리

배운 내용 : Python 문법

ord('a')는 97이므로, 'a'부터 'z'까지는 ord(문자) - 97을 통해 0~25의 인덱스로 매핑할 수 있다.

abs(x)를 사용하면 두 값의 차이의 절댓값을 구할 수 있다.

profile
일단 하자.

0개의 댓글