๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/programmers

[programmers] ์Šคํƒํ, ํ”„๋ฆฐํ„ฐ

by dar0m! 2020. 7. 16.
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ”„๋ฆฐํ„ฐ

์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐ๏ฟฝ๏ฟฝ

programmers.co.kr

 

๋ฌธ์ œ

์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐํ„ฐ๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋‹ค.

1. ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ(J)๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊บผ๋ƒ…๋‹ˆ๋‹ค.
2. ๋‚˜๋จธ์ง€ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ J๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•œ ๊ฐœ๋ผ๋„ ์กด์žฌํ•˜๋ฉด J๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์Šต๋‹ˆ๋‹ค. 3. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด J๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ค‘์š”๋„๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด priorities์™€ ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ์–ด๋–ค ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” location์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

ํ•ด๊ฒฐ

key point, ํ + ์šฐ์„ ์ˆœ์œ„ ํ
  1. queue๊ฐ€ q, priority_queue๊ฐ€ pq ์ผ๋•Œ,
  2. q์—๋Š” ๋ฌธ์„œ์˜ ์ˆœ์„œ๋ฅผ, pq์—๋Š” ๋ฌธ์„œ์˜ ์ค‘์š”๋„๋ฅผ ๋„ฃ๋Š”๋‹ค.
    • priority_queue ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ž๋™์ •๋ ฌ๋˜๋Š” ์ ์„ ์ด์šฉํ•œ๋‹ค.
  3. q์˜ ๋งจ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ค‘์š”๋„์™€ pq์˜ ๋งจ ์•ž์— ์žˆ๋Š” ์ค‘์š”๋„๊ฐ€ ๊ฐ™์œผ๋ฉด ์ธ์‡„๊ฐ€ ๋œ๋‹ค. → answer++
    • ์ด๋•Œ, ์ธ์‡„ํ•˜๋Š” ๋ฌธ์„œ์˜ ์ˆœ์„œ๊ฐ€ ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ์˜ ๋ฒˆํ˜ธ์™€ ๊ฐ™๋‹ค๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์—ฐ์‚ฐ์„ ๊ณ„์†ํ•œ๋‹ค.
  4. q์™€ pq์˜ ๋งจ ์•ž์˜ ์ค‘์š”๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด q๋งจ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋งจ ๋’ค์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค.

 

์ฝ”๋“œ

๋Œ“๊ธ€