์ดํƒœํ™
ํ™'story
์ดํƒœํ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171)
    • TW (39)
    • AI (47)
      • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ (10)
      • Kaggle (2)
      • Machine Learning (26)
      • Computer Vision (0)
      • Deep Learning (0)
      • ROS2 (7)
    • Computer Science (29)
      • Data Structure (0)
      • Algorithm (18)
      • Computer Architecture (5)
      • SOLID (0)
      • System Programing (6)
    • LOLPAGO (10)
      • ํ”„๋ก ํŠธ์—”๋“œ (10)
      • ๋ฐฑ์—”๋“œ (0)
    • BAEKJOON (2)
    • React (5)
    • ์–ธ์–ด (8)
      • C++ (8)
    • GIT (0)
    • MOGAKCO (19)
    • ๋ฏธ๊ตญ ์—ฌํ–‰๊ธฐ (3)
    • etc. (7)
      • Blog (2)
      • ์ฝœ๋ผํ†ค (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋”ฅ๋Ÿฌ๋‹
  • kaggle
  • pytorch
  • Ai
  • ML
  • LOLPAGO
  • computer architecture
  • react
  • NLP
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • algorithm
  • ROS2
  • C++
  • computerscience
  • ๋ฐฑ์ค€
  • ๊ธฐ๊ณ„ํ•™์Šต
  • baekjoon
  • ๋จธ์‹ ๋Ÿฌ๋‹
  • ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•
  • tw

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
์ดํƒœํ™

ํ™'story

[Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection
Computer Science/Algorithm

[Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection

2022. 10. 20. 04:03

๐Ÿค”๋ถ„ํ• ์ •๋ณต

๋ถ„ํ• ์ •๋ณต์ด๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ํ•ด๋‹น ๋‹ต์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ œ์‹œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ Conquer์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Good Pivot์„ ์ฐพ๊ธฐ ์œ„ํ•œ Selection ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Good Pivot์„ ์ฐพ๋Š” ๊ฒƒ์€ MOM(Median Of Medians)๋ฅผ ์ฐพ๋Š” ๊ฒƒ์— ํ•„์ˆ˜์ ์ธ ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ์ œ๋Œ€๋กœ ์ˆ™์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Selection - Quick Select

 

๐Ÿค” Problem

ํฌ๊ธฐ๊ฐ€ $n$์ธ ๋ฐฐ์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, A์—์„œ $k$๋ฒˆ์งธ๋กœ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

ํŠน๋ณ„ํžˆ $k$๊ฐ€ $n/2$ ($n$์ด even ์ธ ๊ฒฝ์šฐ) ํ˜น์€ $(n+1)/2$ ($n$์ด odd์ธ ๊ฒฝ์šฐ) ์ผ ๋•Œ, $k$๋ฒˆ์งธ ์ž‘์€ ์›์†Œ๋ฅผ A์˜ median (์ค‘์•™๊ฐ’) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜์˜ ๋ฐฐ์—ด์—์„œ $k = 1$์ด๋ผ๋ฉด ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜๋‚˜ ๋” ์•Œ์•„๋ณด์ž๋ฉด $k = 9$๋ผ๋ฉด 9๋ฒˆ์งธ๋กœ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ Median ๊ฐ’์€ $k = 10/2 = 5$ ์ฆ‰, 5๋ฒˆ์งธ๋กœ ์ž‘์€ ์›์†Œ์ธ 6์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

๐Ÿค” Solution 1

$A$๋ฅผ ์ •๋ ฌํ•˜์—ฌ $k$๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

 

 

์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋ฐฐ์šด worst case์ธ merge sort ๋˜๋Š” heap sort๋ฅผ ์ด์šฉํ•˜์—ฌ $k$๋ฅผ ์ฐพ์œผ๋ฉด $O(nlogn)$์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

๐Ÿค” Solution 2

Divide and Conquer ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์— ํ•™์Šตํ•  Quick Select๊ฐ€ Divide and Conquer ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

Worst Case

1), 2), 3)์„ ์ฐจ๋ก€๋กœ ์‹คํ–‰ํ•˜๋ฉฐ $n'$์ด $n - 1$์ผ๋•Œ worst case๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ $O(n^2)$์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

์•„๋ž˜์™€ ๊ฐ™์€ ์‹์œผ๋กœ ์•„๋ฌด ์ˆซ์ž๋ฅผ pivot์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

Average case(Expectation)

๋” ์ข‹์€ pivot์„ ํ™•๋ฅ ์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฝ‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋ฝ‘์•„์ง„ pivot์„ "Good Pivot"์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ $O(n)$์˜ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Selection - Quick Sort

 

๋” ๋‚˜์•„๊ฐ€ Quick Sort์— ์œ„์˜ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

์ˆœ์„œ๋Š” ๋’ค์ฃฝ๋ฐ•์ฃฝ์ด์—ˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ๋ถ„ํ• ์ •๋ณต์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

MOM(Median Of Medians)๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Good Pivot์„ ์„ค์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋ฏ€๋กœ ๊ผญ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ๋‹ค์Œ ํฌ์ŠคํŠธ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

'Computer Science > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] Dynamic Programming(2) - LIS(Longest Increasing Subsequence)  (0) 2022.11.17
[Algorithm] Dynamic Programming(1) - Warm Up  (0) 2022.11.15
[Algorithm] ๋ถ„ํ• ์ •๋ณต(3) - Matrix Multiplication  (0) 2022.10.20
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph  (0) 2022.10.13
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)  (0) 2022.10.08
    'Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Algorithm] Dynamic Programming(2) - LIS(Longest Increasing Subsequence)
    • [Algorithm] Dynamic Programming(1) - Warm Up
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(3) - Matrix Multiplication
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph
    ์ดํƒœํ™
    ์ดํƒœํ™
    ๊ณต๋ถ€ํ•˜์ž ํƒœํ™์•„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”