SMALL
2018 카카오 블라인드 채용 코딩테스트 입니다.
문제 출처
풀이코드
import re
def solution(str1, str2):
str1, str2, str_1, str_2 = str1.lower(), str2.lower(), [], []
for i in range(len(str1)-1):
temp = str1[i]+str1[i+1]
temp=re.sub('[^a-z]','',temp)
if len(temp)==2: str_1.append(temp)
for i in range(len(str2)-1):
temp = str2[i]+str2[i+1]
temp=re.sub('[^a-z]','',temp)
if len(temp)==2: str_2.append(temp)
# 다중집합의 합집합 구하기
str_1_c, Union = str_1.copy(), str_1.copy()
for i in str_2:
if i not in str_1_c:
Union.append(i)
else:
str_1_c.remove(i)
# 다중집합의 교집합 구하기
Int=[]
for i in str_2:
if i in str_1:
str_1.remove(i)
Int.append(i)
if len(Union) == 0: answer = 65536
else: answer = int(len(Int)/(len(Union)) * 65536)
return answer
지난 번에 써먹었던 정규표현식으로 문자열 정리해줬습니다.
다중집합이 아니라면 set()함수로 교집합과 차집합 구할 수 있었을 것 같아요.
다중집합에서 합집합과 교집합을 구하려면 쌍둥이(?) 리스트를 만들어서 하나씩 비교해가면 됩니다!
LIST
'알고리즘-python > Programmers 문제' 카테고리의 다른 글
[프로그래머스/2단계/파이썬(Python3)] 예상 대진표 (0) | 2021.06.25 |
---|---|
[프로그래머스/2단계/파이썬(Python3)] 오픈채팅방 (0) | 2021.06.25 |
[프로그래머스/2단계/파이썬(Python3)] 숫자의 표현 (0) | 2021.06.25 |
[프로그래머스/1단계/파이썬(Python3)] 폰켓몬 (0) | 2021.06.25 |
[프로그래머스/1단계/파이썬(Python3)] 신규 아이디 추천 (0) | 2021.06.25 |