๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/72412

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆœ์œ„ ๊ฒ€์ƒ‰

["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

[๋ณธ ๋ฌธ์ œ๋Š” ์ •ํ™•์„ฑ๊ณผ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ๊ฐ๊ฐ ์ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.]

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

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

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

๋ฌผ๋ก  ์ด ์™ธ์—๋„ ๊ฐ ๊ฐœ๋ฐœํŒ€์˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฌธ์˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์— python์œผ๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, frontend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ, ์†Œ์šธํ‘ธ๋“œ๋กœ chicken์„ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 100์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์— cpp๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ, ์†Œ์šธํ‘ธ๋“œ๋กœ pizza๋ฅผ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 100์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
  • backend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 200์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
  • ์†Œ์šธํ‘ธ๋“œ๋กœ chicken์„ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 250์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 150์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?

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

* [์กฐ๊ฑด]์„ ๋งŒ์กฑํ•˜๋Š” ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ X์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?


[๋ฌธ์ œ]

์ง€์›์ž๊ฐ€ ์ง€์›์„œ์— ์ž…๋ ฅํ•œ 4๊ฐ€์ง€์˜ ์ •๋ณด์™€ ํš๋“ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑํ•œ ๊ฐ’์˜ ๋ฐฐ์—ด info, ๊ฐœ๋ฐœํŒ€์ด ๊ถ๊ธˆํ•ดํ•˜๋Š” ๋ฌธ์˜์กฐ๊ฑด์ด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด query๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,
๊ฐ ๋ฌธ์˜์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ˆซ์ž๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

ํ’€์ด

Set์„ ๋งŒ๋“ค์–ด intersection์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋‹จ์ˆœํžˆ ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‹œ๋„ํ•ด๋ณด์•˜๋Š”๋ฐ ์ •ํ™•๋„๋Š” ํ†ต๊ณผํ–ˆ์ง€๋งŒ ํšจ์œจ์„ฑ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ด๋ ค๋ฉด ๋‘ ๊ฐ€์ง€ ๋ถ€๋ถ„์„ ์‹ ๊ฒฝ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์ฟผ๋ฆฌ์— "-"๊ฐ€ ์žˆ์„ ๋•Œ์˜ ํƒ์ƒ‰์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ์ด๊ณ , ๋‘๋ฒˆ์งธ๋Š” ์ฃผ์–ด์ง„ ์ ์ˆ˜ ์ด์ƒ์˜ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ฐพ๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

ํƒ์ƒ‰์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ์–ด์ง„ ์ž…๋ ฅ ์ค‘ ์ ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ์กฐ๊ฑด๋“ค๊ณผ "-" ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์กฐํ•ฉ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "python and frontend and senior and chicken 200" ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋”•์…”๋„ˆ๋ฆฌ ์š”์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"pythonfrontendseniorchicken" : 200

"-frontendseniorchicken" : 200

"--seniorchicken" : 200

"---chicken" : 200

"----" : 200

.

.

.

"pythonfrontendsenior-" : 200

 

๊ฐ ์œ„์น˜์— ์ฃผ์–ด์ง„ ์ •๋ณด ํ˜น์€ "-" ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2^4 ๋กœ ์ด 16๊ฐœ์˜ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์„ฑ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  info์— ๋Œ€ํ•ด ํ‚ค๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ‚ค๋ผ๋ฉด ์ ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ „์ฒด ๋”•์…”๋„ˆ๋ฆฌ ํƒ์ƒ‰ํ•  ํ•„์š”์—†์ด query๋กœ key๋ฅผ ๋งŒ๋“ค์–ด ๊ณง๋ฐ”๋กœ ์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ‚ค๋ฅผ ์ž…๋ ฅํ•ด ์–ป์€ ์ ์ˆ˜๋“ค์—์„œ ์ฟผ๋ฆฌ๋กœ ์ฃผ์–ด์ง„ ์ ์ˆ˜ ์ด์ƒ์˜ ์ ์ˆ˜๋“ค์„ ๊ณจ๋ผ๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์™„์ „ํƒ์ƒ‰์œผ๋กœ๋Š” ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ์ˆ˜๋“ค์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ์ด๋ถ„ ํƒ์ƒ‰์œผ๋กœ ๋ฐ”์šด๋“œ๋ฅผ ์ฐพ์•„ ์ธ๋ฑ์Šค๋ฅผ ๊ฐœ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด O(NLogN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ ์ˆ˜๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฝ”๋“œ