Programmers / 2단계 / [1차] 뉴스 클러스터링 / python / 2018 KAKAO BLIND RECRUITMENT

2024. 2. 17. 01:06·코딩테스트/programmers (python)

코딩테스트 연습 - [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  (1) 2024.02.13
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • Programmers / 2단계 / 깊이/너비 우선 탐색(DFS/BFS) / python /
  • Programmers / 2단계 / k진수에서 소수 개수 구하기 / python / 2018 KAKAO BLIND RECRUITMENT
  • Programmers / 2단계 / 튜플 / python / 2019 카카오 개발자 겨울 인턴십
  • Programmers / 2단계 / 모음사전 / python
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (321) N
      • 코딩테스트 (222) N
        • programmers (python) (156) N
        • 백준 (python) (64) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (18) N
        • Python (4)
        • Java | Spring (6)
        • Unity (3)
        • API (3)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    백엔드 개발자 역량
    모델 성능 평가
    train_test_split
    2 x n 타일링
    티스토리챌린지
    백엔드 개발자
    프렌즈4블록
    데이터분석
    야근 지수
    웹크롤링
    API
    오블완
    kakao map api
    asterisk
    오차행렬
    Boxplot
    그리디 알고리즘
    백엔드
    프로그래머스
    대입 표현식
    카카오맵
    바다코끼리
    코딩테스트
    Greedy
    카카오맵 api
    confusion matrix
    Python
    solving environment
    파이썬
    박스플롯
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
Programmers / 2단계 / [1차] 뉴스 클러스터링 / python / 2018 KAKAO BLIND RECRUITMENT
상단으로

티스토리툴바