코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 (programmers.co.kr)
일단 나는 문자열을 토대로 str1 과 str2 의 딕셔너리를 만들어주고,
이후, 교집합과, 합집합을 계산해준다음
최종적으로, 65536 계산을 통해 return하는 형식으로 풀었다.
import re
# str1,str2,answer='FRANCE,french,16384'.split(',')
# str1,str2,answer='handshake,shake hands,65536'.split(',')
# str1,str2,answer='aa1+aa2,AAAA12,43690'.split(',')
# str1,str2,answer='E=M*C^2,e=m*c^2,65536'.split(',')
def mkstdic(str):
dic={}
for i in range(len(str)-1):
now = str[i]+str[i+1]
now = re.sub('[^a-z]','',now)
if len(now)<2: continue
if dic.get(now):
dic[now]+=1
else:
dic[now]=1
return dic
def solution(str1,str2):
a,b = mkstdic(str1.lower()), mkstdic(str2.lower())
kyo={}
hap={}
for ak in a:
if ak in b:
kyo[ak] = min(a[ak],b[ak])
hap[ak] = max(a[ak],b[ak])
else:
hap[ak] = a[ak]
for bk in b:
if bk in a: continue
else: hap[bk] = b[bk]
oper = sum(map(lambda x : kyo[x], kyo))
div = sum(map(lambda x : hap[x], hap))
if div == 0 : return 65536
return int((oper/div)*65536)
solution(str1,str2)
'CODING TEST > Programmers' 카테고리의 다른 글
Programmers Summer/Winter Coding(~2018)소수 만들기 파이썬 (0) | 2021.06.19 |
---|---|
파이썬 Python KAKAO_2018 프렌즈 4블록 (0) | 2021.06.15 |
N진수 게임 (Python) (0) | 2021.06.13 |
프로그래머스 다단계칫솔판매 (Python) (0) | 2021.06.13 |
2019 KAKAO BLIND RECRUITMENT 매칭 점수 (0) | 2021.05.29 |