1919번 - 에너그램 만들기

의혁·2025년 1월 22일
0

[Algorithm] 알고리즘

목록 보기
19/50

💡 Counter()는 신이다..

import sys
from collections import Counter

input = sys.stdin.readline

first = Counter(input().rstrip())
second = Counter(input().rstrip())

total = (first-second) + (second-first)

print(sum(total.values()))
  • 다시 한번 Counter()의 위대함을 알게 되었다...ㅋㅋㅋㅋㅋㅋㅋ
  • 문제에서는 두 단어에서 각각 삭제할 것들을 삭제해서 두 단어가 동일해지게 만들 수 있는 최소의 삭제 갯수를 구하는 것이였다.
  • 결론은 삭제할 것을 삭제해서 두개의 구성요소를 동일하게 만들면 되는 것이었다,
  • Counter의 합과 차를 써서 first에서 second와 동일한 요소들을 전부 제거하고, 반대로 second에서 first와 동일한 요소들을 전부 제거해서 둘을 합쳐 필요없는 요소들을 전부 구할 수 있었다.

Counter()에 대한 추가 정보

  1. Dict 형태로 합과 차를 전부 이용할 수 있다.
  2. Counter.values()를 통해서 해당 key값들의 value를 dic_values([1,2,3])으로 도출이 가능하다.

1. Dict 형태로 합과 차를 전부 이용할 수 있다.

# 1
# fist = Counter({a:1, b:1})
# second = Couunter ({a:1, c:1})

# Counter({a:2, b:1, c:1})
print(first + second)
# Counter({b:1})
print(first - second)
  • 위 코드에서 보이는 것 처럼 Counter는 합과 차를 모두 지원한다.
  • 합은 합집합 , 차는 차집합과 동일하게 작동한다.

2. Counter.values()를 통해서 해당 key값들의 value를 dict_values([1,2,3])으로 도출이 가능하다.

total = Counter({a:2, b:1, c:1})

# dict_values([2,1,1])
print(total.values)
# 4
print(sum(total.values())
  • 위 코드에서 보이는 것과 같이 values()나 keys()를 사용하여 Counter 내부 값들을 출력할 수 있다.
profile
매일매일 차근차근 나아가보는 개발일기

0개의 댓글