- ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋ ๋ฌธ์ ํ์ด์ ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ์ค ์์ ๊ฒ์ ์์ ํ์ด๋ณผ ์ ์์ต๋๋ค.
์นด์นด์ค๋ ํ๋ฐ๊ธฐ ๊ฒฝ๋ ฅ ๊ฐ๋ฐ์ ๊ณต๊ฐ์ฑ์ฉ์ ์งํ ์ค์ ์์ผ๋ฉฐ ํ์ฌ ์ง์์ ์ ์์ ์ฝ๋ฉํ ์คํธ๊ฐ ์ข ๋ฃ๋์์ต๋๋ค. ์ด๋ฒ ์ฑ์ฉ์์ ์ง์์๋ ์ง์์ ์์ฑ ์ ์๋์ ๊ฐ์ด 4๊ฐ์ง ํญ๋ชฉ์ ๋ฐ๋์ ์ ํํ๋๋ก ํ์์ต๋๋ค.
- ์ฝ๋ฉํ ์คํธ ์ฐธ์ฌ ๊ฐ๋ฐ์ธ์ด ํญ๋ชฉ์ cpp, java, python ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ง์ ์ง๊ตฐ ํญ๋ชฉ์ backend์ frontend ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ง์ ๊ฒฝ๋ ฅ๊ตฌ๋ถ ํญ๋ชฉ์ junior์ senior ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ ํธํ๋ ์์ธํธ๋๋ก chicken๊ณผ pizza ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
์ธ์ฌ์์ ํ์ ๊ทผ๋ฌดํ๊ณ ์๋ ๋๋์ฆ๋ ์ฝ๋ฉํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ์ฌ ์ฑ์ฉ์ ์ฐธ์ฌํ ๊ฐ๋ฐํ๋ค์ ์ ๊ณตํ๊ธฐ ์ํด ์ง์์๋ค์ ์ง์ ์กฐ๊ฑด์ ์ ํํ๋ฉด ํด๋น ์กฐ๊ฑด์ ๋ง๋ ์ง์์๊ฐ ๋ช ๋ช ์ธ ์ง ์ฝ๊ฒ ์ ์ ์๋ ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋ฐํ์์ ๊ถ๊ธํดํ๋ ๋ฌธ์์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋ ์ ์์ต๋๋ค.
์ฝ๋ฉํ
์คํธ์ java๋ก ์ฐธ์ฌํ์ผ๋ฉฐ, backend ์ง๊ตฐ์ ์ ํํ๊ณ , junior ๊ฒฝ๋ ฅ์ด๋ฉด์,
์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ฌ๋ ์ค ์ฝ๋ฉํ
์คํธ ์ ์๋ฅผ 50์ ์ด์ ๋ฐ์ ์ง์์๋ ๋ช ๋ช
์ธ๊ฐ?
-
itertools, bisect ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
-
query ์กฐ๊ฑด์ key ๋ก, score list๋ฅผ value๋ก ๊ฐ์ง๋ ๋์ ๋๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
-
info ์ถ๊ฐ : ๋์ ๋๋ฆฌ์์ info ๊ฐ ํด๋น๋๋ ๋ชจ๋ ์กฐ๊ฑด์ key๊ฐ์ score๋ฅผ ์ถ๊ฐํ๋ค.
- info๊ฐ ํด๋น๋๋ ์กฐ๊ฑด์ info์์ ์ฃผ์ด์ง ๊ฐ ํญ๋ชฉ์ ๊ฐ๊ณผ '-'์ ์กฐํฉ์ผ๋ก ๊ตฌํ๋ค.
2^4 = 16 ๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๊ณ itertools ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ product๋ฅผ ์ฌ์ฉํ๋ค.
items = [[lang, '-'],[type, '-'],[career, '-'],[food, '-']]
conds = list(map(lambda x: "".join(x), product(*items)))
- ์ฒ์์๋ ๋ฐ์ดํฐ ์ถ๊ฐํ ๋ bisect.insort ๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋์๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ง์ง๋ง์ sortํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค๐
- info๊ฐ ํด๋น๋๋ ์กฐ๊ฑด์ info์์ ์ฃผ์ด์ง ๊ฐ ํญ๋ชฉ์ ๊ฐ๊ณผ '-'์ ์กฐํฉ์ผ๋ก ๊ตฌํ๋ค.
-
query ๊ฒ์ : ๋์ ๋๋ฆฌ์์ query์ ํด๋นํ๋ key๋ฅผ ์ฐพ๋๋ค. value๋ ์ ์๊ฐ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด์๋ ๋ฆฌ์คํธ๋ก, ๊ฒ์ํ๋ ์ ์์ index๋ฅผ ์ฐพ์ ์ ์ฒด ๋ฆฌ์คํธ ๊ธธ์ด์์ ๋นผ์ฃผ๋ฉด ํด๋น ์ ์ ์ด์์ ์ ์๋ค ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค. bisect_left ๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ด ๋ค์ด๊ฐ์ผํ ์ด์ index๋ฅผ ๋ฐํํ๋ฏ๋ก ๋์ผ๊ฐ์ด ์์ ๊ฒฝ์ฐ์๋ ์ ์ฉํ ์ ์๋ค.
๐ก ํจ์จ์ฑ์ ์ํด์ ์ ์์กฐ๊ฑด ์ด์์ ๊ฐ๋ค์ ๊ตฌํ ๋, ์ ๋ ฌ๋์ด ์๋ ๋ฆฌ์คํธ์์ ์ด๋ถํ์ ์ ์ด์ฉํ๋๊ฒ ์ค์ ํฌ์ธํธ
-
-
set ์ ํฉ์งํฉ, ๊ต์งํฉ ์ด์ฉ
-
score๋ฆฌ์คํธ์ ๊ฐ ํญ๋ชฉ(cpp, java, python, backend, ...)์ ์งํฉ์ ๋ง๋ ๋ค.
-
info ๋ฅผ ์ํํ๋ฉฐ ํด๋นํ๋ ํญ๋ชฉ์ ์งํฉ์ index๋ฅผ ์ถ๊ฐํ๋ค. ์ ์๋ scores ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
-
query ์กฐ๊ฑด์ ํด๋นํ๋ ๊ต์งํฉ์ ๊ตฌํ๋ค.
-
๊ต์งํฉ์ index ๊ฐ์ scores ๋ฆฌ์คํธ์์ ํ์ธํ์ฌ ํด๋น ์ ์ ์ด์์ผ ๊ฒฝ์ฐ ๊ฐ์๋ฅผ ๊ตฌํ๋ค. -> ํ๋์ฉ ๊ฐ์ ํ์ธํด์ ํจ์จ์ฑ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค..
-
์ฒ์์๋ ํธ๋ฆฌ dfs๋ก ๋ฌธ์ ํ์ด๋ฅผ ์๋ํ์ต๋๋ค. ํ์ง๋ง ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ง์กฑ์ํค์ง ๋ชปํด ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๊ณ , ํ์ฐธ์ ๊ณ ๋ฏผํ๋ค๊ฐ ๊ฒ์์ ํตํด ํด์ฑ์ผ๋ก ๋ฌธ์ ํ์ด๋ฅผ ํ๋ค๋ ํํธ๋ฅผ ์ป๊ณ ์ง์์๋ค์ ์ ๋ณด๋ค์ ์กฐํฉ์ ํด์ฑํด ๋ฆฌ์คํธ์ ์ง์์๋ค์ ์ ์๋ฅผ ์ ์ฅํด๋๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ดํ์ต๋๋ค.
- ์ง์์๋ค์ ์ ๋ณด
info
๋ฅผ ๋ฐ์ 0๋ถํฐ 4๊น์ง(์ ์๋ง ์ ์ธ) ๋ชจ๋ ์กฐํฉ์ ๊ตฌํด ํด์ฑํ๋ค. - ํค์ ๊ฐ์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ์ฃผ์ด ๊ฐ๊ฐ์ ํค์ ๋ํด ์ง์์๋ค์ ์ ์๋ฅผ ์ ์ฅํ๋ค.
query
๋ฅผ ์ํํ๋ฉฐ '-' ๊ฐ์ ์ ์ธํ ์ ์๋ฏธํ ๊ฐ (ex 'java', 'senior', 'pizza' ๋ฑ)์ ํค๋ก ๊ฐ์ง๋ ๋ฆฌ์คํธ๋ฅผ ์ ํด์ํ ์ด๋ธ์์ ๊ตฌํด์ค๋ค.- ์ฐพ์ ๋ฆฌ์คํธ์์ ์ผ์ ์ ์ ์ด์์ ์ง์์๋ค์ ์๋ฅผ ๊ตฌํด์ค๋ค.
์ด ๋, ์๊ฐ ๋ณต์ก๋๋ฅผ ์ํด ๊ฐ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋ฏธ๋ฆฌ ์ ๋ ฌํด๋๊ณ query
๋ฅผ ์ํํ๋ฉฐ ์ด๋ถํ์์ผ๋ก ์ง์์์ ์๋ฅผ ๊ตฌํด์ฃผ์๋ค.