728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/17677?language=python3
🍒풀이
1. string 을 모두 대문자 or 소문자로 변환 후
2. 2개씩 단어를 짤라서 리스트에 저장한다. (str1 -> a 리스트, str2 -> b 리스트에 저장)
3. 두 리스트의 교집합과 합집합을 구한 뒤
4. 교집합 원소 중 count 함수를 사용해서 둘 중 (a, b) 작은 값을
5. 합집합 원소 중 count 함수를 사용해서 둘 중 큰 값을 구한다.
6. union_sum = 0 이면 65536을 리턴하고
7. 0이 아니면 answer * 65536 을 int 형으로 리턴한다.
🍒코드
def make_list(s_str):
li = []
for i in range(len(s_str)-1):
tmp = s_str[i:i+2]
if tmp.isalpha() == False:
continue
li.append(tmp)
return li
def solution(str1, str2):
answer = 1.0
a = make_list(str1.upper())
b = make_list(str2.upper())
intersect = set(a) & set(b)
union = set(a) | set(b)
inter_sum = sum([min(a.count(x), b.count(x)) for x in intersect])
union_sum = sum([max(a.count(x), b.count(x)) for x in union])
if union_sum == 0:
return 65536
answer = inter_sum / union_sum
answer = int(answer * 65536)
return answer
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 쿼드압축 후 개수 세기 (C++) (0) | 2021.03.30 |
---|---|
[프로그래머스] 신규 아이디추천 (Python) (0) | 2021.03.29 |
[프로그래머스] 게임 맵 최단거리 (C++) (0) | 2021.03.23 |
[프로그래머스] 타겟넘버 (Python) (0) | 2021.03.23 |
[프로그래머스] 가장 큰 정사각형 찾기 (Python) (0) | 2021.03.23 |
댓글