_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 [1차] 뉴스 클러스터링 파이썬(Python)
코딩테스트

[코딩테스트] 프로그래머스 [1차] 뉴스 클러스터링 파이썬(Python)

2023. 1. 7. 00:32
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/17677

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

from collections import Counter
def solution(str1, str2):
    str1 = [str1[i:i+2].upper() for i in range(len(str1)-1) if str1[i:i+2].isalpha()]
    str2 = [str2[i:i+2].upper() for i in range(len(str2)-1) if str2[i:i+2].isalpha()]
    if len(str1) == 0 and len(str2) == 0:
        return 65536
    A = Counter(str1)
    B = Counter(str2)
    intersection = sum([min(A[key], B[key]) for key in (A&B)])
    union = sum([max(A[key], B[key]) for key in (A|B)])
    result = (intersection / union) * 65536
    
    return int(result)

 

 

Counter 모듈과 list comprehension을 사용하여 문제를 해결하였습니다.

 

먼저 list comprehension을 이용하여 입력으로 들어오는 str1, str2를 두 글자씩 끊어서 str1, str2에 저장합니다.

이때 특수문자나 공백을 가진 글자쌍이 존재한다면 isalpha()함수로 확인하여 걸러주었습니다.

 

str1과 str2의 크기가 0인 즉 공집합인 경우에는 65536을 반환하였습니다.

 

str1, str2에 Counter() 모듈을 사용하여 각 문자의 수를 세어 A, B로 저장하였습니다.

그리고 먼저 교집합을 찾아 계산합니다.

(A&B)로 A와 B의 교집합에 들어있는 key를 찾아 min()함수를 적용하여 두 값중 작은값만 intersection 리스트에 저장하고 모두 더해줍니다.

다음은 합집합을 찾아 계산합니다.

(A|B)로 A와 B의 합집합에 들어있는 key를 찾아 max()함수를 적용하여 두 값중 큰 값만 union 리스트에 저장하고 모두 더해줍니다.

 

그리고 자카드 유사도를 계산한뒤에 65536을 곱해주고 int()를 적용하여 정수부분문 결과로 return 합니다.

 

 

반응형

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 테이블 해시 함수 파이썬(Python)  (0) 2023.01.13
[코딩테스트] 프로그래머스 개인정보 수집 유효기간 파이썬(Python)  (0) 2023.01.11
[코딩테스트] 프로그래머스 메뉴 리뉴얼 파이썬(Python)  (0) 2023.01.05
[코딩테스트] 프로그래머스 [3차] 압축 파이썬(Python)  (0) 2023.01.05
[코딩테스트] 프로그래머스 가장 긴 팰린드롬 파이썬(Python)  (0) 2023.01.04
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 테이블 해시 함수 파이썬(Python)
    • [코딩테스트] 프로그래머스 개인정보 수집 유효기간 파이썬(Python)
    • [코딩테스트] 프로그래머스 메뉴 리뉴얼 파이썬(Python)
    • [코딩테스트] 프로그래머스 [3차] 압축 파이썬(Python)
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바