코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 스쿨 (programmers.co.kr)
나의 풀이
.
모범 답안
def solution(str1, str2):
str1 = str1.upper()
str2 = str2.upper()
# 다중집합 구하기
A, B = [], []
for i in range(len(str1)-1):
str = str1[i:i+2] # 두글자씩 끊어
if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦
A.append(str)
for i in range(len(str2)-1):
str = str2[i:i+2] # 두글자씩 끊어
if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦
B.append(str)
# 자카드 유사도 구하기
if len(A) == 0 and len(B) == 0:
j = 1
else:
# 다중합집합
a_temp = A.copy()
a_result = A.copy()
for i in B:
if i not in a_temp: # B에만 존재하면 합집합에 추가
a_result.append(i)
else: # 공통으로 존재하면 중복되므로 제거
a_temp.remove(i)
# 다중교집합
result = []
for i in B:
if i in A:
A.remove(i)
result.append(i)
j = len(result)/len(a_result) # 자카드 유사도 = 교집합/합집합
return (int(j * 65536))
알게된 점
- 다중집합(Multi Set)
기존의 집합과 다르게 중복된 원소를 허용하는 집합을 다중집합이라고 한다.
중복집합이라고도 불리며, 통상적인 집합은 각 원소의 중복도가 1인 중복집합으로 여길 수 있다.
a = [1,2,2,3,4,5]
b = [1,1,2,3,4,6]
일반 집합의 합집합: [1,2,3,4,5,6]
일반 집합의 교집합: [1,2,3,4]
다중 집합의 합집합: [1,1,2,2,3,4,5,6]
다중 집합의 교집합: [1,2,3,4]
[Python] 다중합집합, 다중교집합 (velog.io)
- copy()
python / 얕은 복사, 깊은 복사 (tistory.com)
python / 얕은 복사, 깊은 복사
파이썬에는 immutable객체와 mutable 객체가 있다. immutable 객체 - 값을 바꿀 수 없는 객체 - 값이 바뀌면 다른 메모리 공간을 할당하여 주소값도 바꿔줘야 한다. - int, str, float, boolean, tuple mutable 객체 -
seulow-down.tistory.com
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 깊이/너비 우선 탐색(DFS/BFS) / python / (1) | 2024.02.17 |
---|---|
Programmers / 2단계 / k진수에서 소수 개수 구하기 / python / 2018 KAKAO BLIND RECRUITMENT (0) | 2024.02.17 |
Programmers / 2단계 / 튜플 / python / 2019 카카오 개발자 겨울 인턴십 (0) | 2024.02.16 |
Programmers / 2단계 / 모음사전 / python (1) | 2024.02.13 |
Programmers / 2단계 / 타겟 넘버 / python (0) | 2024.02.13 |