https://programmers.co.kr/learn/courses/30/lessons/17677
출처 : 프로그래머스
from collections import Counter
import math
def solution(str1, str2):
answer = 0
# 모두 대문자로 통일
str1 = str1.upper()
str2 = str2.upper()
print(str1,str2)
# 문자열로만 구성된 2글자 배열에 삽입
tmp1 = []
tmp2 = []
for s1 in range(len(str1)-1):
if str1[s1].isalpha() and str1[s1+1].isalpha():
tmp1.append(str1[s1]+str1[s1+1])
for s2 in range(len(str2)-1):
if str2[s2].isalpha() and str2[s2+1].isalpha():
tmp2.append(str2[s2]+str2[s2+1])
# Counter 객체
counter1 = Counter(tmp1)
counter2 = Counter(tmp2)
# 교집합과 합집합
interset_set = list((counter1 & counter2).elements())
union_set = list((counter1 | counter2).elements())
if len(union_set) == 0:
return 65536
return math.floor((len(interset_set) /len(union_set))*65536)
풀이
대소문자 구분을 하지 않으니 모두 대문자로 통일시켜서 시작했다.
또한, 2개씩 문자열을 나눠서 배열에 넣을 때, 쪼갠 2개가 문자열이 맞는지 isalpha()로 확인해서 배열에 넣었다.
그리고 Counter() 를 사용해 객체를 만들어냈다.
Counter()는 set()처럼 교집합 & , 합집합 | 을 만들수 있다.
Counter().elements() 를 사용하면 요소(값) 만 뽑을 수 있다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 여행경로 python (*) (0) | 2022.04.28 |
---|---|
[프로그래머스] 구명보트 python (*) (0) | 2022.04.25 |
[프로그래머스] 주식가격 python (0) | 2022.04.23 |
[프로그래머스] 큰 수 만들기 python (*) (0) | 2022.04.21 |
[프로그래머스] N개의 최소공배수 python (0) | 2022.04.21 |