[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฉโ๐ผ ๋ด์ค ํด๋ฌ์คํฐ๋ง - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python / KAKAO BLIND RECRUITMENT
KAKAO BLIND RECRUITMENT
๐ฉ๐ผ ๋ด์ค ํด๋ฌ์คํฐ๋ง ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ ๋์ ์ฝ๋
import re
from collections import Counter as mset
p = re.compile("[a-z]{2}")
def multiSet(str):
lst = []
for idx in range(len(str)-1):
if p.match(str[idx:idx+2]):
lst.append(str[idx:idx+2])
return lst
def solution(str1, str2):
lst1 = multiSet(str1.lower())
lst2 = multiSet(str2.lower())
len_lst1 = len(lst1)
len_lst2 = len(lst2)
if len_lst1 == 0 and len_lst2 == 0:
return 65536
mset1 = mset(lst1)
mset2 = mset(lst2)
inter_lst = list((mset1 & mset2).elements())
len_inter_lst = len(inter_lst)
len_union_lst = len_lst1 + len_lst2 - len_inter_lst
return int(len_inter_lst/len_union_lst *65536)
์์นด๋ ์ ์ฌ๋๋ผ๋ ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๋ ์งํฉ์ ์ ์ฌ๋๋ฅผ ๊ฒ์ฌํ๋ ๋ฌธ์ ์ ๋๋ค. ์ ์ฌ๋๋ฅผ ๊ฒ์ฌํ ๋ ๊ฐ ๋ฌธ์์ด์ ๋ ๊ธ์์ฉ ๋์ด์ ๋ค์ค์งํฉ์ ์์๋ก ๋ง๋ ๋ค.ํ๊ณ ์๋ฌธ์๋ก ๋ ๊ธ์ ์๋ง ์ ํจํ๋ค ํ์ผ๋, ์ฒ์์ผ๋ก ํด์ผํ ๊ฑด ๋ ๊ธ์์ฉ ๋์ด์ ๋ค์ค ์งํฉ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
def multiSet(str):
lst = []
for idx in range(len(str)-1):
if p.match(str[idx:idx+2]):
lst.append(str[idx:idx+2])
return lst
๋ ๋ฌธ์์ด์ ๊ฐ์ ์ํ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ multiSet
์ด๋ผ๋ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ด์ ์งํํ์ต๋๋ค. multiSet
์ ๋์๋ฌธ์ ์ฐจ์ด๋ ๋ฌด์ํ๋ค๋ผ๋ ์กฐ๊ฑด์ ์ํด ๋ชจ๋ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ ๋ค์ค์งํฉ์ ๋ง๋ญ๋๋ค. ๊ทธ ๋ค ์์์ ๋ถํฐ ๋ ๊ธ์์ฉ ๋์ด์ match
๋ฅผ ์ด์ฉํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ ์ ๊ท ํํ์๊ณผ ๋น๊ตํฉ๋๋ค.
p = re.compile("[a-z]{2}")
์ ๊ท ํํ์์ ์ํ๋ฒณ ์๋ฌธ์ ๋ ์๋ฆฌ๋ฉด ํด๋นํ๋ match ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ ์๋๋ฉด None์ ๋ฐํํ๊ฒ ๋ฉ๋๋ค. ์ ์ ํ ๋ ๊ธ์ ๋ฌธ์์ด์ ๋ฐฐ์ด์ ์ถ๊ฐํ์ฌ ๋ฐํํฉ๋๋ค. ์ด ๊ฒฐ๊ณผ ๊ฐ์์ ๋ ๋ฐฐ์ด ๋ชจ๋ ํฌ๊ธฐ๊ฐ 0์ผ ์ ๋ฐ๋ก 65536
์ ๋ฐํํด์ค๋๋ค.
๋ค์์ ์ค๋ณต์ ํ์ฉํ ๋ค์ค์งํฉ์ ๊ต์งํฉ์ ๊ตฌํ๋ ๊ณผ์ ์
๋๋ค. ์ค๋ณต์ ํฌํจํ๊ธฐ ๋๋ฌธ์ set
์๋ฃํ์ผ๋ก ์งํํ ์ ์ค๋ณต์ด ์ฌ๋ผ์ ธ์ ๋ค๋ฅธ ํด๊ฒฐ์ฑ
์ ์ฐพ์์ผํฉ๋๋ค. ์ ๋ ์ฌ๊ธฐ์ Python ๋ด์ฅ ๋ชจ๋์ธ collections
์ Counter
๋ฅผ ์ด์ฉํ์ต๋๋ค. Counter
๋ dict
์๋ฃํ์ ์๋ธ ํด๋์ค๋ก list
๋ฅผ Counter
๋ก ๋ณํํ๊ฒ ๋๋ฉด list
์ ์์๋ฅผ key
๋ก ๋ฑ์ฅํ ๋ฐฐ์ด ๋ด์์ ๋ฑ์ฅํ ํ์๋ฅผ value
๋ก ํ๋ Counter
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ฒ ๋ฉ๋๋ค. Counter
๊ฐ์ฒด๋ set
๊ณผ ๋น์ทํ๊ฒ &
์ฐ์ฐ๊ณผ |
์ฐ์ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. &
์ฐ์ฐ์ ๊ฒฝ์ฐ Counter
์ key
๋ณ๋ก value
์ ์ต์๊ฐ์ ๊ฐ์ง Counter
๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ , |
์ฐ์ฐ์ ๊ฒฝ์ฐ ์ต๋๊ฐ์ ๊ฐ์ง Counter
๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
mset1 = mset(lst1)
mset2 = mset(lst2)
inter_lst = list((mset1 & mset2).elements())
์ฌ๊ธฐ์ ์ฌ์ฉํ ๊ฑด &
์ฐ์ฐ์
๋๋ค. multiSet
์ผ๋ก ๋ง๋ค์ด์ง ๋ ๋ค์ค ์งํฉ์ Counter
๊ฐ์ฒด๋ก ๋ง๋ ๋ค, ๋ Counter
๊ฐ์ฒด์ &
์ฐ์ฐ์ ํ์ฌ ๊ต์งํฉ์ Counter
๊ฐ์ฒด๋ฅผ ๊ตฌํฉ๋๋ค. ๊ทธ ๋ค ๋ค์ list
์๋ฃํ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
len_inter_lst = len(inter_lst)
len_union_lst = len_lst1 + len_lst2 - len_inter_lst
return int(len_inter_lst/len_union_lst *65536)
์ด์ ๋ชจ๋ ๊ณผ์ ์ด ๋๋ฌ์ต๋๋ค. ๊ต์งํฉ์ ํด๋นํ๋ list
์ ๊ธธ์ด๋ฅผ ์ธก์ ํ์ฌ ์ด๋ฅผ ๊ต์งํฉ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํฉ๋๋ค. ํฉ์งํฉ์ ํฌ๊ธฐ๋ ๋ ์งํฉ์ ํฌ๊ธฐ๋ฅผ ๋ํ๊ณ ๊ต์งํฉ์ ํฌ๊ธฐ๋ฅผ ๋นผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ฌธ์ ๊ฐ ๋ง๋ฌด๋ฆฌ ๋ฉ๋๋ค.
Written with StackEdit.
'Algorithm > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ทโโ๏ธ ์ ๋ง๋๊ธฐ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ทโโ๏ธ ์ ๋ง๋๊ธฐ / Python
2019.02.14 -
[ํ๋ก๊ทธ๋๋จธ์ค] ๐งฑ ํ๋ ์ฆ 4 ๋ธ๋ก - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐งฑ ํ๋ ์ฆ 4 ๋ธ๋ก - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
2019.02.14 -
[ํ๋ก๊ทธ๋๋จธ์ค] ๐จโ๐ป ์บ์ - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐จโ๐ป ์บ์ - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
2019.02.13 -
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฏ ๋คํธ ๊ฒ์ - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
[ํ๋ก๊ทธ๋๋จธ์ค] ๐ฏ ๋คํธ ๊ฒ์ - [1์ฐจ] 2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ / Python
2019.02.12