julia coding story

[프로그래머스] 뉴스 클러스터링 python 본문

카테고리 없음

[프로그래머스] 뉴스 클러스터링 python

julia-biolat 2025. 2. 11. 23:16
728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

그냥 너무 당황스러운 문제

처음에는 문제 자체가 오 쉽네? 였는데,,

약간 조건들이 다;; 힘듦;;

 

 

알아야할 것

1. upper(), lower() - 대소문자 구별 X

str1 = str1.upper()
str2 = str2.upper()

 

 

2. isalpha() 함수 사용

str1 = 'abc'
str2 = 'a12'

str1.isalpha()  #True
str2.isalpha()  #False

 

 

3. Counter 사용 - 합,차집합

set()이용인줄 알았는데 생각해보면, 중복 허용해야함. 

from collections import Counter

Counter1 = Counter(set1)
Counter2 = Counter(set2)

inter = len(list((Counter1&Counter2).elements()))
union = len(list((Counter1|Counter2).elements()))

 

 

 

정답

# 대소문자 구별 X - upper(), lower() 이용
# set() 이용인줄 알았지만(중복 허용이 안됨), Counter사용 - 합,차집합
# 문자 제거 
# isalpha() 함수 알기

from collections import Counter
def solution(str1, str2):
    str1 = str1.upper()
    str2 = str2.upper()
    
    s1 = str1
    s2 = str2
    
    set_1 = []
    set_2 = []
    for i in range(len(s1) -1):
        a = s1[i] + s1[i+1]
        set_1.append(a)
    
    for i in range(len(s2) -1):
        a = s2[i] + s2[i+1]
        set_2.append(a)
    
    set1 = []
    set2 = []
    for i in set_1:
        if i[0].isalpha() and i[1].isalpha():
            set1.append(i)
    
    for i in set_2:
        if i[0].isalpha() and i[1].isalpha():
            set2.append(i)
            
    Counter1 = Counter(set1)
    Counter2 = Counter(set2)
    
    inter = len(list((Counter1&Counter2).elements()))
    union = len(list((Counter1|Counter2).elements()))
    print(inter)
    print(union)
    
    if union == 0:
        return 65536
    
    if inter == 0:
        return 0
    
    answer = int((inter / union ) *65536)
    return answer