๋ฌธ์ ์ค๋ช
์ฌ๋ฌ ์ธ๋ก ์ฌ์์ ์์์ง๋ ๋ด์ค, ํนํ ์๋ณด์ฑ ๋ด์ค๋ฅผ ๋ณด๋ฉด ๋น์ท๋น์ทํ ์ ๋ชฉ์ ๊ธฐ์ฌ๊ฐ ๋ง์ ์ ์ ํ์ํ ๊ธฐ์ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค. Daum ๋ด์ค์ ๊ฐ๋ฐ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋ ์ ์ ์ฌ์ ํ๋ธ๋ ์ฌ์ฉ์๋ค์ด ํธ๋ฆฌํ๊ฒ ๋ค์ํ ๋ด์ค๋ฅผ ์ฐพ์๋ณผ ์ ์๋๋ก ๋ฌธ์ ์ ์ ๊ฐ์ ํ๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค.
๊ฐ๋ฐ์ ๋ฐฉํฅ์ ์ก๊ธฐ ์ํด ํ๋ธ๋ ์ฐ์ ์ต๊ทผ ํ์ ๊ฐ ๋๊ณ ์๋ "์นด์นด์ค ์ ์ ๊ฐ๋ฐ์ ๊ณต์ฑ" ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํด๋ณด์๋ค.
- ์นด์นด์ค ์ฒซ ๊ณต์ฑ..'๋ธ๋ผ์ธ๋' ๋ฐฉ์ ์ฑ์ฉ
- ์นด์นด์ค, ํฉ๋ณ ํ ์ฒซ ๊ณต์ฑ.. ๋ธ๋ผ์ธ๋ ์ ํ์ผ๋ก ๊ฐ๋ฐ์ ์ฑ์ฉ
- ์นด์นด์ค, ๋ธ๋ผ์ธ๋ ์ ํ์ผ๋ก ์ ์ ๊ฐ๋ฐ์ ๊ณต์ฑ
- ์นด์นด์ค ๊ณต์ฑ, ์ ์ ๊ฐ๋ฐ์ ์ฝ๋ฉ ๋ฅ๋ ฅ๋ง ๋ณธ๋ค
- ์นด์นด์ค, ์ ์ ๊ณต์ฑ.. "์ฝ๋ฉ ์ค๋ ฅ๋ง ๋ณธ๋ค"
- ์นด์นด์ค "์ฝ๋ฉ ๋ฅ๋ ฅ๋ง์ผ๋ก 2018 ์ ์ ๊ฐ๋ฐ์ ๋ฝ๋๋ค"
๊ธฐ์ฌ์ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก "๋ธ๋ผ์ธ๋ ์ ํ"์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ์ "์ฝ๋ฉ ํ ์คํธ"์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ๋ก ๋๋๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค. ํ๋ธ๋ ์ด๋ค์ ๊ฐ๊ฐ ๋ฌถ์ด์ ๋ณด์ฌ์ฃผ๋ฉด ์นด์นด์ค ๊ณต์ฑ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ์ฐพ์๋ณด๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ๋ฏ์ถ์๋ค.
์ ์ฌํ ๊ธฐ์ฌ๋ฅผ ๋ฌถ๋ ๊ธฐ์ค์ ์ ํ๊ธฐ ์ํด์ ๋ ผ๋ฌธ๊ณผ ์๋ฃ๋ฅผ ์กฐ์ฌํ๋ ํ๋ธ๋ "์์นด๋ ์ ์ฌ๋"๋ผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋๋ค.
์์นด๋ ์ ์ฌ๋๋ ์งํฉ ๊ฐ์ ์ ์ฌ๋๋ฅผ ๊ฒ์ฌํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก ์๋ ค์ ธ ์๋ค. ๋ ์งํฉ 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๊ฐ ๋๋ค.
์ ํ ์ฌํญ
์ ๋ ฅํ์
- ์ ๋ ฅ์ผ๋ก๋ str1๊ณผ str2์ ๋ ๋ฌธ์์ด์ด ๋ค์ด์จ๋ค. ๊ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋ 2 ์ด์, 1,000 ์ดํ์ด๋ค.
- ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ ๋ฌธ์์ด์ ๋ ๊ธ์์ฉ ๋์ด์ ๋ค์ค์งํฉ์ ์์๋ก ๋ง๋ ๋ค. ์ด๋ ์๋ฌธ์๋ก ๋ ๊ธ์ ์๋ง ์ ํจํ๊ณ , ๊ธฐํ ๊ณต๋ฐฑ์ด๋ ์ซ์, ํน์ ๋ฌธ์๊ฐ ๋ค์ด์๋ ๊ฒฝ์ฐ๋ ๊ทธ ๊ธ์ ์์ ๋ฒ๋ฆฐ๋ค. ์๋ฅผ ๋ค์ด "ab+"๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ฉด, "ab"๋ง ๋ค์ค์งํฉ์ ์์๋ก ์ผ๊ณ , "b+"๋ ๋ฒ๋ฆฐ๋ค.
- ๋ค์ค์งํฉ ์์ ์ฌ์ด๋ฅผ ๋น๊ตํ ๋, ๋๋ฌธ์์ ์๋ฌธ์์ ์ฐจ์ด๋ ๋ฌด์ํ๋ค. "AB"์ "Ab", "ab"๋ ๊ฐ์ ์์๋ก ์ทจ๊ธํ๋ค.
์ถ๋ ฅ ํ์
- ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ ๋ ๋ฌธ์์ด์ ์์นด๋ ์ ์ฌ๋๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ ์ฌ๋ ๊ฐ์ 0์์ 1 ์ฌ์ด์ ์ค์์ด๋ฏ๋ก,
- ์ด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ฝ๋๋ก 65536์ ๊ณฑํ ํ์ ์์์ ์๋๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ ์๋ถ๋ง ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์
str1 | str2 | answer |
FRANCE | french | 16384 |
handshake | shake hands | 65536 |
aa1+aa2 | AAAA12 | 43690 |
E=M*C^2 | e=m*c^2 | 65536 |
์ ์ถ๋ ฅ ์ ์ค๋ช
ํ์ด
- ํ! ์ฐธ. ๋ ๋ญ๋ก ๋ณด๊ณ . ์ฝ๋ค.
- set()์จ์ ์งํฉ ์ฐ์ฐ ํ๋ฉด ๋๋๊ฑฐ ์๋๋?
- ์. ์๋ผ ใ ใ ใ ใ ใ
- set()์จ์ ์งํฉ ์ฐ์ฐ ํ๋ฉด ๋๋๊ฑฐ ์๋๋?
def solution(str1, str2):
answer = 0
lst1 = list(str1)
lst2 = list(str2)
lst3 = []
lst4 = []
print(lst1, lst2)
for i in range(len(lst1)-1):
_t = lst1[i]+lst1[i+1]
if _t.isalpha() == True:
lst3.append(_t) # _t.lower()๋ ๋น๊ตํ ๋ ์จ์ผํ๋ค.
for i in range(len(lst2)-1):
_t = lst2[i]+lst2[i+1]
if _t.isalpha() == True:
lst4.append(_t)
print(lst3, lst4)
set3 = set(lst3)
set4 = set(lst4)
print(set3, set4)
ํฉ์งํฉ = set3 | set4
๊ต์งํฉ = set3 & set4
print(ํฉ์งํฉ, ๊ต์งํฉ) # ์... ์๋๋ค?
return answer
- ์ผ๋จ set์ ์ฐ๋ฉด ์๋๊ณ ,
- ์ง์ ํฉ์งํฉ, ๊ต์งํฉ์ ๊ตฌํํด์ผ ํจ.
- ์ ์ ๋ฐ ๋ฐฉ๋ฒ์ด ์๊ตฌ๋!
- ์บ์ฌํฉ๋๋ค!
def solution(str1, str2):
lst1 = list(str1)
lst2 = list(str2)
lst3 = []
lst4 = []
print(lst1, lst2)
for i in range(len(lst1)-1):
_t = lst1[i]+lst1[i+1]
if _t.isalpha() == True:
lst3.append(_t.lower())
for i in range(len(lst2)-1):
_t = lst2[i]+lst2[i+1]
if _t.isalpha() == True:
lst4.append(_t.lower())
print(lst3, lst4)
lst3_copy = lst3.copy()
๊ต์งํฉ = []
for i in lst4:
if i in lst3:
lst3.remove(i)
๊ต์งํฉ.append(i)
ํฉ์งํฉ = lst3 + lst4
ma = max(len(ํฉ์งํฉ), len(๊ต์งํฉ))
mi = min(len(ํฉ์งํฉ), len(๊ต์งํฉ))
if ma == 0:
return 65536
J = mi / ma
return int(65536 * J)
ํ
์คํธ 1
์
๋ ฅ๊ฐ ใ "FRANCE", "french"
๊ธฐ๋๊ฐ ใ 16384
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ ['F', 'R', 'A', 'N', 'C', 'E'] ['f', 'r', 'e', 'n', 'c', 'h']
['fr', 'ra', 'an', 'nc', 'ce'] ['fr', 're', 'en', 'nc', 'ch']
ํ
์คํธ 2
์
๋ ฅ๊ฐ ใ "handshake", "shake hands"
๊ธฐ๋๊ฐ ใ 65536
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ ['h', 'a', 'n', 'd', 's', 'h', 'a', 'k', 'e'] ['s', 'h', 'a', 'k', 'e', ' ', 'h', 'a', 'n', 'd', 's']
['ha', 'an', 'nd', 'ds', 'sh', 'ha', 'ak', 'ke'] ['sh', 'ha', 'ak', 'ke', 'ha', 'an', 'nd', 'ds']
ํ
์คํธ 3
์
๋ ฅ๊ฐ ใ "aa1+aa2", "AAAA12"
๊ธฐ๋๊ฐ ใ 43690
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ ['a', 'a', '1', '+', 'a', 'a', '2'] ['A', 'A', 'A', 'A', '1', '2']
['aa', 'aa'] ['aa', 'aa', 'aa']
ํ
์คํธ 4
์
๋ ฅ๊ฐ ใ "E=M*C^2", "e=m*c^2"
๊ธฐ๋๊ฐ ใ 65536
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ ['E', '=', 'M', '*', 'C', '^', '2'] ['e', '=', 'm', '*', 'c', '^', '2']
[] []
- ๋๊ทผ ๋๊ทผ ํ๋ค์... ์ฑ์ ๊ฐ์ฆ์!
def solution(str1, str2):
lst1 = list(str1)
lst2 = list(str2)
lst3 = []
lst4 = []
for i in range(len(lst1)-1):
_t = lst1[i]+lst1[i+1]
if _t.isalpha() == True:
lst3.append(_t.lower())
for i in range(len(lst2)-1):
_t = lst2[i]+lst2[i+1]
if _t.isalpha() == True:
lst4.append(_t.lower())
lst3_copy = lst3.copy()
๊ต์งํฉ = []
for i in lst4:
if i in lst3:
lst3.remove(i)
๊ต์งํฉ.append(i)
ํฉ์งํฉ = lst3 + lst4
ma = max(len(ํฉ์งํฉ), len(๊ต์งํฉ))
mi = min(len(ํฉ์งํฉ), len(๊ต์งํฉ))
if ma == 0:
return 65536
J = mi / ma
return int(65536 * J)
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.5MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.68ms, 10.5MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.02ms, 10.5MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.6MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.07ms, 10.5MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.02ms, 10.5MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.06ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.14ms, 10.5MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.22ms, 10.5MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.07ms, 10.5MB)
- ์ด์ ๋ณด๋ ์ ํฉ์งํฉ๊ณผ ๊ต์งํฉ์ ๊ตฌํ๋ ๋ถ๋ถ์ด ํต์ฌ์ด๊ตฌ๋.
- set์ ์ฐ๋ ค๊ณ ํ๋ฉด ๋ณต์กํด์ง๋ค.
- ๊ทธ๋ฅ ๊ต์งํฉ์ ๋จผ์ ๊ตฌํ๊ณ , ๊ต์งํจ ๋ง๋ค๋ฉด์ ํ๋จน์ ๋ฆฌ์คํธ3๊ณผ ๋ฆฌ์คํธ4๋ฅผ ๋ํ๋ฉด ํฉ์งํฉ์ด ๋์ด.
- set์ ์ฐ๋ ค๊ณ ํ๋ฉด ๋ณต์กํด์ง๋ค.
def solution(str1, str2):
lst1, lst2 = list(str1),list(str2)
lst3, lst4 = [], []
for i in range(len(lst1)-1):
_t = lst1[i]+lst1[i+1]
if _t.isalpha() == True:
lst3.append(_t.lower())
for i in range(len(lst2)-1):
_t = lst2[i]+lst2[i+1]
if _t.isalpha() == True:
lst4.append(_t.lower())
๊ต์งํฉ = []
for i in lst4:
if i in lst3:
lst3.remove(i)
๊ต์งํฉ.append(i)
ํฉ์งํฉ = lst3 + lst4
ma = max(len(ํฉ์งํฉ), len(๊ต์งํฉ))
mi = min(len(ํฉ์งํฉ), len(๊ต์งํฉ))
if ma == 0:
return 65536
return int(65536 * mi / ma)
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ์ต์ต๋จ์ ์ธ์ฐ์ (0) | 2023.02.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก (1) | 2023.02.21 |
ํ๋ก๊ทธ๋๋จธ์ค k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2023.02.21 |
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ์บ์ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ์คํฌํธ๋ฆฌ (0) | 2023.02.20 |