๐กsolutions )
๐ฌ ๋ก์ง์ ํฌ๊ฒ 2๊ฐ์ง. ๋ฌธ์์ด์์ ์๋ฌธ์ ์กฐํฉ์ผ๋ก ๋ ์ ํจํ ๊ธ์์ ์ฐพ๊ธฐ / Counter๋ก ํฉ์งํฉ, ๊ต์งํฉ ์ฐ์ฐ ํ ๊ธธ์ด ๊ตฌํ๊ธฐ
๐ฌ ๋์๋ฌธ์ ์ฐจ์ด๋ ๋ฌด์ํ๋ฏ๋ก ๋ชจ๋ ๋๋ฌธ์๋ก ๋ฐ๊ฟจ๋ค -> upper()๋ฉ์๋ ์ฌ์ฉ
๐ฌ ๊ฐ ๋ฌธ์์ด์ 2๊ฐ์ฉ ๋์ด ๋ค์ค์งํฉ์ผ๋ก ๋ง๋๋๋ฐ ์๋ฌธ์๋ก ๋ ์กฐํฉ๋ง lst์ appendํด์ค๋ค -> isalpha()๋ก ๋ฌธ์์ธ์ง ํ์ธ
๐ฌ ๋ชจ๋ ๊ณต์งํฉ์ธ ๊ฒฝ์ฐ์๋ 65536 ๋ฐ๋ก ๋ฆฌํด
๐ฌ collections ๋ชจ๋์ Counter ํด๋์ค ์ฌ์ฉ. ์ฒ์์ set์ ๋ ์ฌ๋ ธ๋๋ฐ set์ ๊ฒฝ์ฐ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ์ ๋๋ก๋ ๊ฒฐ๊ณผ๊ฐ์ ์ป๊ธฐ ์ด๋ ค์์ Counter์ ์ฌ์ฉํ์.
๐ฌ Counter์ &ํฉ์งํฉ ์ฐ์ฐ(inter), |๊ต์งํฉ ์ฐ์ฐ(union)์ ํ๊ณ ๊ธธ์ด๋ฅผ ๊ตฌํด ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด
๐ซcode )
from collections import Counter
def solution(str1, str2):
str1 = str1.upper()
str2 = str2.upper()
lst1 = []
lst2 = []
# ์ ํจํ ๋ ๊ธ์์ฉ ๋์ด์ ๋ฆฌ์คํธ์ ๋ฃ๊ธฐ
for i in range(0, len(str1) - 1):
tmp = str1[i:i + 2]
if tmp.isalpha():
lst1.append(tmp)
for i in range(0, len(str2) - 1):
tmp = str2[i:i + 2]
if tmp.isalpha():
lst2.append(tmp)
# ๋ชจ๋ ๊ณต์งํฉ์ธ ๊ฒฝ์ฐ
if len(lst1) == len(lst2) == 0:
return 65536
# ๊ต์งํฉ, ํฉ์งํฉ์ ๊ธธ์ด ๊ตฌํด์ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด
c1 = Counter(lst1)
c2 = Counter(lst2)
inter = len(list((c1 & c2).elements()))
union = len(list((c1 | c2).elements()))
return int(inter / union * 65536)
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/17677?language=python3
๋ด์ค ํด๋ฌ์คํฐ๋ง์ฌ๋ฌ ์ธ๋ก ์ฌ์์ ์์์ง๋ ๋ด์ค, ํนํ ์๋ณด์ฑ ๋ด์ค๋ฅผ ๋ณด๋ฉด ๋น์ท๋น์ทํ ์ ๋ชฉ์ ๊ธฐ์ฌ๊ฐ ๋ง์ ์ ์ ํ์ํ ๊ธฐ์ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค. Daum ๋ด์ค์ ๊ฐ๋ฐ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋ ์ ์ ์ฌ์ ํ๋ธ๋ ์ฌ์ฉ์๋ค์ด ํธ๋ฆฌํ๊ฒ ๋ค์ํ ๋ด์ค๋ฅผ ์ฐพ์๋ณผ ์ ์๋๋ก ๋ฌธ์ ์ ์ ๊ฐ์ ํ๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ๊ฐ๋ฐ์ ๋ฐฉํฅ์ ์ก๊ธฐ ์ํด ํ๋ธ๋ ์ฐ์ ์ต๊ทผ ํ์ ๊ฐ ๋๊ณ ์๋ ์นด์นด์ค ์ ์ ๊ฐ๋ฐ์ ๊ณต์ฑ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํด๋ณด์๋ค.
๊ธฐ์ฌ์ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ๋ธ๋ผ์ธ๋ ์ ํ์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ์ ์ฝ๋ฉ ํ ์คํธ์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ๋ก ๋๋๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค. ํ๋ธ๋ ์ด๋ค์ ๊ฐ๊ฐ ๋ฌถ์ด์ ๋ณด์ฌ์ฃผ๋ฉด ์นด์นด์ค ๊ณต์ฑ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ์ฐพ์๋ณด๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ๋ฏ์ถ์๋ค. ์ ์ฌํ ๊ธฐ์ฌ๋ฅผ ๋ฌถ๋ ๊ธฐ์ค์ ์ ํ๊ธฐ ์ํด์ ๋ ผ๋ฌธ๊ณผ ์๋ฃ๋ฅผ ์กฐ์ฌํ๋ ํ๋ธ๋ ์์นด๋ ์ ์ฌ๋๋ผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋๋ค. ์์นด๋ ์ ์ฌ๋๋ ์งํฉ ๊ฐ์ ์ ์ฌ๋๋ฅผ ๊ฒ์ฌํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก ์๋ ค์ ธ ์๋ค. ๋ ์งํฉ A, B ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J(A, B)๋ ๋ ์งํฉ์ ๊ต์งํฉ ํฌ๊ธฐ๋ฅผ ๋ ์งํฉ์ ํฉ์งํฉ ํฌ๊ธฐ๋ก ๋๋ ๊ฐ์ผ๋ก ์ ์๋๋ค. ์๋ฅผ ๋ค์ด ์งํฉ A = {1, 2, 3}, ์งํฉ B = {2, 3, 4}๋ผ๊ณ ํ ๋, ๊ต์งํฉ A ∩ B = {2, 3}, ํฉ์งํฉ A ∪ B = {1, 2, 3, 4}์ด ๋๋ฏ๋ก, ์งํฉ A, B ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J(A, B) = 2/4 = 0.5๊ฐ ๋๋ค. ์งํฉ A์ ์งํฉ B๊ฐ ๋ชจ๋ ๊ณต์งํฉ์ผ ๊ฒฝ์ฐ์๋ ๋๋์ ์ด ์ ์๋์ง ์์ผ๋ ๋ฐ๋ก J(A, B) = 1๋ก ์ ์ํ๋ค. ์์นด๋ ์ ์ฌ๋๋ ์์์ ์ค๋ณต์ ํ์ฉํ๋ ๋ค์ค์งํฉ์ ๋ํด์ ํ์ฅํ ์ ์๋ค. ๋ค์ค์งํฉ A๋ ์์ 1์ 3๊ฐ ๊ฐ์ง๊ณ ์๊ณ , ๋ค์ค์งํฉ B๋ ์์ 1์ 5๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ์. ์ด ๋ค์ค์งํฉ์ ๊ต์งํฉ A ∩ B๋ ์์ 1์ min(3, 5)์ธ 3๊ฐ, ํฉ์งํฉ A ∪ B๋ ์์ 1์ max(3, 5)์ธ 5๊ฐ ๊ฐ์ง๊ฒ ๋๋ค. ๋ค์ค์งํฉ A = {1, 1, 2, 2, 3}, ๋ค์ค์งํฉ B = {1, 2, 2, 4, 5}๋ผ๊ณ ํ๋ฉด, ๊ต์งํฉ A ∩ B = {1, 2, 2}, ํฉ์งํฉ A ∪ B = {1, 1, 2, 2, 3, 4, 5}๊ฐ ๋๋ฏ๋ก, ์์นด๋ ์ ์ฌ๋ J(A, B) = 3/7, ์ฝ 0.42๊ฐ ๋๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ฌ์ด์ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ๋๋ฐ ์ด์ฉํ ์ ์๋ค. ๋ฌธ์์ด FRANCE์ FRENCH๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ๋ ๊ธ์์ฉ ๋์ด์ ๋ค์ค์งํฉ์ ๋ง๋ค ์ ์๋ค. ๊ฐ๊ฐ {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}๊ฐ ๋๋ฉฐ, ๊ต์งํฉ์ {FR, NC}, ํฉ์งํฉ์ {FR, RA, AN, NC, CE, RE, EN, CH}๊ฐ ๋๋ฏ๋ก, ๋ ๋ฌธ์์ด ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J("FRANCE", "FRENCH") = 2/8 = 0.25๊ฐ ๋๋ค. ์ ๋ ฅ ํ์
์ถ๋ ฅ ํ์์ ๋ ฅ์ผ๋ก ๋ค์ด์จ ๋ ๋ฌธ์์ด์ ์์นด๋ ์ ์ฌ๋๋ฅผ ์ถ๋ ฅํ๋ค. ์ ์ฌ๋ ๊ฐ์ 0์์ 1 ์ฌ์ด์ ์ค์์ด๋ฏ๋ก, ์ด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ฝ๋๋ก 65536์ ๊ณฑํ ํ์ ์์์ ์๋๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ ์๋ถ๋ง ์ถ๋ ฅํ๋ค. ์์ ์
์ถ๋ ฅ
|