julia coding story
[프로그래머스] 뉴스 클러스터링 python 본문
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