Skip to content

Latest commit

ย 

History

History

programmers_kakao_3

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์นด์นด์˜ค ์ˆœ์œ„ ๊ฒ€์ƒ‰ ๋ฌธ์ œ

๋ฌธ์ œ์„ค๋ช…

์นด์นด์˜ค๋Š” ํ•˜๋ฐ˜๊ธฐ ๊ฒฝ๋ ฅ ๊ฐœ๋ฐœ์ž ๊ณต๊ฐœ์ฑ„์šฉ์„ ์ง„ํ–‰ ์ค‘์— ์žˆ์œผ๋ฉฐ ํ˜„์žฌ ์ง€์›์„œ ์ ‘์ˆ˜์™€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฑ„์šฉ์—์„œ ์ง€์›์ž๋Š” ์ง€์›์„œ ์ž‘์„ฑ ์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด 4๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๋ฐ˜๋“œ์‹œ ์„ ํƒํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ฐธ์—ฌ ๊ฐœ๋ฐœ์–ธ์–ด ํ•ญ๋ชฉ์— cpp, java, python ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์› ์ง๊ตฐ ํ•ญ๋ชฉ์— backend์™€ frontend ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์› ๊ฒฝ๋ ฅ๊ตฌ๋ถ„ ํ•ญ๋ชฉ์— junior์™€ senior ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํ˜ธํ•˜๋Š” ์†Œ์šธํ‘ธ๋“œ๋กœ chicken๊ณผ pizza ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธ์žฌ์˜์ž…ํŒ€์— ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ๋‹ˆ๋‹ˆ์ฆˆ๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ฑ„์šฉ์— ์ฐธ์—ฌํ•œ ๊ฐœ๋ฐœํŒ€๋“ค์— ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ง€์›์ž๋“ค์˜ ์ง€์› ์กฐ๊ฑด์„ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๋Š” ์ง€์›์ž๊ฐ€ ๋ช‡ ๋ช…์ธ ์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐœ๋ฐœํŒ€์—์„œ ๊ถ๊ธˆํ•ดํ•˜๋Š” ๋ฌธ์˜์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์— java๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, backend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , junior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ,  
์†Œ์šธํ‘ธ๋“œ๋กœ pizza๋ฅผ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 50์  ์ด์ƒ ๋ฐ›์€ ์ง€์›์ž๋Š” ๋ช‡ ๋ช…์ธ๊ฐ€?  

ํ’€์ด

โœ ์œ ๋ฆผ

  1. itertools, bisect ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

    1. query ์กฐ๊ฑด์„ key ๋กœ, score list๋ฅผ value๋กœ ๊ฐ€์ง€๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

    2. 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ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜ ํšจ์œจ์„ฑ ์‹œ๊ฐ„ ๋น„๊ต
    3. query ๊ฒ€์ƒ‰ : ๋”•์…”๋„ˆ๋ฆฌ์—์„œ query์— ํ•ด๋‹นํ•˜๋Š” key๋ฅผ ์ฐพ๋Š”๋‹ค. value๋Š” ์ ์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ, ๊ฒ€์ƒ‰ํ•˜๋Š” ์ ์ˆ˜์˜ index๋ฅผ ์ฐพ์•„ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ๊ธธ์ด์—์„œ ๋นผ์ฃผ๋ฉด ํ•ด๋‹น ์ ์ˆ˜ ์ด์ƒ์˜ ์ ์ˆ˜๋“ค ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. bisect_left ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ’์ด ๋“ค์–ด๊ฐ€์•ผํ•  ์ด์ „ index๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๋™์ผ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

      ๐Ÿ’ก ํšจ์œจ์„ฑ์„ ์œ„ํ•ด์„œ ์ ์ˆ˜์กฐ๊ฑด ์ด์ƒ์˜ ๊ฐ’๋“ค์„ ๊ตฌํ•  ๋•Œ, ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ์ด๋ถ„ํƒ์ƒ‰ ์„ ์ด์šฉํ•˜๋Š”๊ฒŒ ์ค‘์š” ํฌ์ธํŠธ

  2. set ์˜ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ ์ด์šฉ

    1. score๋ฆฌ์ŠคํŠธ์™€ ๊ฐ ํ•ญ๋ชฉ(cpp, java, python, backend, ...)์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค.

    2. info ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์˜ ์ง‘ํ•ฉ์— index๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ ์ˆ˜๋Š” scores ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

    3. query ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ต์ง‘ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.

    4. ๊ต์ง‘ํ•ฉ์˜ index ๊ฐ’์„ scores ๋ฆฌ์ŠคํŠธ์—์„œ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ์ ์ˆ˜ ์ด์ƒ์ผ ๊ฒฝ์šฐ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. -> ํ•˜๋‚˜์”ฉ ๊ฐ’์„ ํ™•์ธํ•ด์„œ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ๋‹ค..

      ํšจ์œจ์„ฑ ์‹œ๊ฐ„ ๋น„๊ต

โœ ๋‘์˜

์ฒ˜์Œ์—๋Š” ํŠธ๋ฆฌ dfs๋กœ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•ด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๊ณ , ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ํ•ด์‹ฑ์œผ๋กœ ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•œ๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป๊ณ  ์ง€์›์ž๋“ค์˜ ์ •๋ณด๋“ค์˜ ์กฐํ•ฉ์„ ํ•ด์‹ฑํ•ด ๋ฆฌ์ŠคํŠธ์— ์ง€์›์ž๋“ค์˜ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•ด๋†“๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์ง€์›์ž๋“ค์˜ ์ •๋ณด info๋ฅผ ๋ฐ›์•„ 0๋ถ€ํ„ฐ 4๊นŒ์ง€(์ ์ˆ˜๋งŒ ์ œ์™ธ) ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•ด ํ•ด์‹ฑํ•œ๋‹ค.
  2. ํ‚ค์˜ ๊ฐ’์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฃผ์–ด ๊ฐ๊ฐ์˜ ํ‚ค์— ๋Œ€ํ•ด ์ง€์›์ž๋“ค์˜ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
  3. query๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ '-' ๊ฐ’์„ ์ œ์™ธํ•œ ์œ ์˜๋ฏธํ•œ ๊ฐ’ (ex 'java', 'senior', 'pizza' ๋“ฑ)์„ ํ‚ค๋กœ ๊ฐ€์ง€๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์œ„ ํ•ด์‹œํ…Œ์ด๋ธ”์—์„œ ๊ตฌํ•ด์ค€๋‹ค.
  4. ์ฐพ์€ ๋ฆฌ์ŠคํŠธ์—์„œ ์ผ์ • ์ ์ˆ˜ ์ด์ƒ์˜ ์ง€์›์ž๋“ค์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด์ค€๋‹ค.

์ด ๋•Œ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์œ„ํ•ด ๊ฐ๊ฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•ด๋†“๊ณ  query๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ง€์›์ž์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ์—ˆ๋‹ค.