반응형
풀수록 어렵게 푸는 것 같아서 다른 사람들이 어떻게 푸나 찾아보다가 collections모듈을 이용한 풀이를 발견했다.
간단하게 잘 푼 풀이같다.
난 아직 collections에 익숙하지 않아서 바로 떠오르지가 않는다.
이 풀이를 반복하며 익숙해져야겠다.
import collections
def solution(str1, str2):
arr1, arr2 = [],[]
for i in range(max(len(str1), len(str2))-1):
if (str1[i:i+2].isalpha()) and (len(str1[i:i+2]) == 2): arr1.append(str1[i:i+2].lower())
if (str2[i:i+2].isalpha()) and (len(str2[i:i+2]) == 2): arr2.append(str2[i:i+2].lower())
counter1, counter2 = collections.Counter(arr1), collections.Counter(arr2)
intersection, union = counter1 & counter2, counter1 | counter2
sum1 = sum(x[1] for x in intersection.items())
sum2 = sum(x[1] for x in union.items())
if sum2 == 0:
return 65536
else:
return (65536*sum1) // sum2
<전체 코드>
counter1, counter2 = collections.Counter(arr1), collections.Counter(arr2)
이 코드를 실행하면 딕셔너리 형태로 요소의 갯수가 많은 것부터 리스트형식으로 counter1, counter2에 저장된다.
sum1 = sum(x[1] for x in intersection.items())
sum2 = sum(x[1] for x in union.items())
.items() 함수는 키와 값을 한꺼번에 뽑아내는 것으로 x[1]은 요소가 아니라 요소의 갯수가 저장된 곳!
반응형
'알고리즘 > 카카오 기출문제' 카테고리의 다른 글
[파이썬🐍] 프로그래머스 : [3차] 파일명 정렬 (0) | 2021.07.21 |
---|---|
[파이썬🐍] 프로그래머스 : 숫자 문자열과 영단어 (0) | 2021.07.16 |
[파이썬🐍] 프로그래머스 : 괄호 변환 (0) | 2021.06.26 |
[파이썬🐍] 프로그래머스 : [1차] 캐시 (0) | 2021.05.26 |
[파이썬🐍] 프로그래머스 : 오픈채팅방 (0) | 2021.05.09 |
댓글