1. 문제 해석
어떠한 학생이 아나그램..? 을 배웠다는 스토리로 시작한다..
각 문자의 중복이 없게 삭제할 문자(알파벳)의 개수 구하기
2. 접근 방법
python의 collections 모듈의 유용한 함수인 Counter 객체가 있다.
알고리즘 문제를 풀다보면.. 고수분들이 저 모듈로 한줄에 풀어버리는 경우가 있었다.
일단 알파벳이 몇개있는지 알아야하니깐.. (순서 상관없이)
해당 모듈을 사용할 수 있다.
사용법은 다음과 같다.
import collections
한 후,
collections.Counter(arr) #리스트의 개수만 카운트한다..
따라서 문자열을 list로 변환하는게 우선일것이다.
그다음 알파벳이 몇개씩있는 딕셔너리를 얻었으므로, 중복된 문자를빼준다. 그리고 남아있는 친구들의 출현횟수 (딕셔너리의 v값 일것이다.) 을 더해준다.
Counter은 참 야무지게 뻴셈으로 연산도된다. 파이썬 감사합니다!
Life is too short, You need python.
요약 - 1. 알파벳 세기 2. 중복된 알파벳 빼기
def makeAnagram(a, b):
remove = 0
la = list(a)
lb = list(b)
dla = collections.Counter(la)
dlb = collections.Counter(lb)
for k,v in (dlb-dla).items() :
remove += v
for k,v in (dla-dlb).items() :
remove += v
return remove
you can make better code.. thx..
'알고리즘' 카테고리의 다른 글
[파이썬][HackerRank]Luck Balance .python 문제 풀이 (0) | 2021.05.31 |
---|---|
[파이썬][HackerRank] Minimum Absolute Difference in an Array . python 문제 풀이 (0) | 2021.05.30 |
[파이썬]코딩테스트 문제 유형 - 정렬 : Tim sort (1) | 2021.05.29 |
[파이썬]해시맵 : 배열의 인덱스와 값을 딕셔너리로 (0) | 2021.05.28 |
영어 알고리즘 문제 단어 정리 (0) | 2021.05.28 |