๋ถ„ํ• ์ •๋ณต(Divide and Conquer) - ์ตœ๊ทผ์ ‘ ์ ์˜ ์Œ ์ฐพ๊ธฐ
ยท
๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ด๋ก 
์ตœ๊ทผ์ ‘ ์ ์˜ ์Œ(closest pair) ๋ฌธ์ œ๋Š” 2์ฐจ์› ํ‰๋ฉด์ƒ์˜ n๊ฐœ์˜ ์ ์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ•œ ์Œ์˜ ์ (๊ฑฐ๋ฆฌ)์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ตœ๊ทผ์ ‘ ์ ์˜ ์Œ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ชจ๋“  ์ ์— ๋Œ€ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ ์˜ ์Œ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ• (BruteForce) - O(n^2) n๊ฐœ์˜ ์ ์„ 1/2๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ์—์„œ ์ตœ๊ทผ์ ‘ ์ ์˜ ์Œ์„ ์ฐพ๊ณ  ๋ถ€๋ถ„ํ•ด ์ค‘ ์งง์€ ์Œ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ• (๋ถ„ํ• ์ •๋ณต) ์ด ์žˆ๋‹ค. ๋ถ€๋ถ„ํ•ด๋ฅผ ์ทจํ•ฉ(์ •๋ณต)ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ์˜์—ญ ์‚ฌ์ด์˜ ์ ์—์„œ ๋” ๊ทผ์ ‘ํ•œ ์ ์˜ ์Œ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๊ฐ„ ์˜์—ญ์˜ ์ ๋“ค์€ [์™ผ์ชฝ ๊ทธ๋ฃน์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ ์˜ x ์ขŒํ‘œ์—์„œ ๋ถ€๋ถ„ํ•ด๋ฅผ ๋บ€ ๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฃน์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์ ์˜ x์ขŒํ‘œ์—์„œ ๋ถ€๋ถ„ํ•ด๋ฅผ ๋”ํ•œ ๊ฐ’ ์‚ฌ์ด์˜ x ์ขŒํ‘œ ๊ฐ’์„ ๊ฐ€์ง„..
๋ถ„ํ• ์ •๋ณต(Divide and Conquer)
ยท
๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ด๋ก 
๋ถ„ํ• ์ •๋ณต -์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋‘˜ ์ด์ƒ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ‘ธ๋Š” ๋ฐฉ๋ฒ• -๋น„์Šทํ•œ ํฌ๊ธฐ๋กœ ๋ฌธ์ œ๋ฅผ ๋‚˜๋ˆ” -์žฌ๊ท€ํ˜ธ์ถœ ์‚ฌ์šฉ ๋ถ„ํ• ์ •๋ณต ๊ณผ์ • Divide :๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ 2๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆˆ๋‹ค. Conquer : ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ๋ฌธ์ œ๋ฅผ ์ •๋ณตํ•œ๋‹ค. Combine : ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ๋“ค์„ ๋ณ‘ํ•ฉํ•˜์—ฌ ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ๋ถ„ํ•  ํšŸ์ˆ˜ ์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ n์ด๊ณ  ์ด ๋ถ„ํ• ํ•œ ํšŸ์ˆ˜๊ฐ€ k๋ผ๋ฉด. -1๋ฒˆ ๋ถ„ํ•  ํ›„ ์ž…๋ ฅ ํฌ๊ธฐ : n/2 -2๋ฒˆ ๋ถ„ํ•  ํ›„ ์ž…๋ ฅ ํฌ๊ธฐ : n/2^2 ... -k๋ฒˆ ๋ถ„ํ•  ํ›„ ์ž…๋ ฅ ํฌ๊ธฐ : n/2^k --> n/2^k ๊ฐ€ 1 ์ด๋ผ๋ฉด ๋” ์ด์ƒ ๋ถ„ํ•  ๋ถˆ๊ฐ€ ๋ถ„ํ•  ํšŸ์ˆ˜ ๋ถ„ํ• ์ •๋ณต์˜ ์‚ฌ์šฉ 1. ํ•ฉ๋ณ‘์ •๋ ฌ(Merge Sort) ์ž…๋ ฅ์ด 2๊ฐœ์˜ ๋ถ€๋ถ„๋ฌธ์ œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋ฐ˜์”ฉ ์ค„์–ด๋“œ๋Š” ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜ -n๊ฐœ์˜..
[2017 ์นด์นด์˜ค์ฝ”๋“œ ์˜ˆ์„ ] ์ปฌ๋Ÿฌ๋ง๋ถ - ํŒŒ์ด์ฌ
ยท
๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/PS
๋ฌธ์ œ https://programmers.co.kr/learn/courses/30/lessons/1829 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นด์นด์˜คํ”„๋ Œ์ฆˆ ์ปฌ๋Ÿฌ๋ง๋ถ 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr ์˜์—ญ์˜ ์ˆ˜์™€ ๊ฐ€์žฅ ํฐ ์˜์—ญ์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œํ’€์ด ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” bfs ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•˜๋‹ค. que์— ์ขŒํ‘œ๋ฅผ ๋„ฃ๊ณ  que๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ move๋ฅผ ์ด์šฉํ•ด ์ฃผ์œ„ ์ขŒํ‘œ(์ƒ,ํ•˜,์ขŒ,์šฐ)๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ๋™์ผํ•œ ๊ฐ’์„ ์ง€๋‹Œ ์ขŒํ‘œ๋Š” que์— ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค. ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋ฉด check ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ์–ด ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ํ•ด์ค€๋‹ค. bfs๋ฅผ ์ƒˆ๋กœ ์‹ค..
[BOJ/๋ฐฑ์ค€] 9024 ๋‘ ์ˆ˜์˜ ํ•ฉ - ํŒŒ์ด์ฌ
ยท
๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/PS
๋ฌธ์ œ https://www.acmicpc.net/problem/9024 ๋ฌธ์ œํ’€์ด num ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๊ณ  k๊ฐ’ ๋ณด๋‹ค ํฐ์ง€ ์•„๋‹Œ์ง€ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ์ด๋ถ„ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค. ๊ทธ ๊ฐ’์ด k๋ณด๋‹ค ํฌ๋ฉด mid-1 ๊ฐ’์„ r๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ  ์ž‘์œผ๋ฉด min+1 ๊ฐ’์„ l๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. k์™€ ๋‘ ์ˆ˜์˜ ํ•ฉ์˜ ์ฐจ์ด๊ฐ€ mini ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด mini ๊ฐ’์„ ์—†๋ฐ์ดํŠธ ํ•ด์ฃผ๊ณ  cnt=1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. mini ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด cnt+=1์„ ํ•ด์ค€๋‹ค. ์ฝ”๋“œ import sys input=sys.stdin.readline t=int(input()) for i in range(t): n,k=map(int,input().split()) num=list(map(int,input().split())) num.sort() mini=200000000 for j in..