알고리즘

프로그래머스)[1차] 뉴스 클러스팅

1일1공부실천하자 2023. 2. 26. 16:34

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

from collections import Counter

def solution(str1, str2):
    answer = 0
    arr1 = []
    arr2 = []
    for i in range(0,len(str1)-1):
        if str1[i].isalpha() and str1[i+1].isalpha():
            arr1.append(str1[i].lower()+str1[i+1].lower())
        # print(str1[i])
    
    for i in range(0,len(str2) - 1):
        if str2[i].isalpha() and str2[i+1].isalpha():
            arr2.append(str2[i].lower()+str2[i+1].lower())
    c1 = Counter(arr1)
    c2 = Counter(arr2)
    
    o = list((c1 & c2).elements())
    t = list((c1 | c2).elements())
    if len(o) == 0 and len(t) == 0:
        return 65536
    answer = int((len(o) / len(t)) * 65536)
    return answer

 

 

딱히 어려운 구현문제는 아니었다.

우선 str[i]와 str[i+1]를 .isalpha()를 통해 둘 모두 알파벳인지 확인 후에 리스트에 담는다.

str1, str2를 담은 리스트를 &와 | 연산자를 통해 교집합과 합집합을 구하면 끝이난다.