[JAVA] 17. ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ (Comparator, Comparable, HashSet, TreeSet)

2022. 5. 11. 22:18ใ†JAVA/์ž๋ฐ”์˜ ์ •์„

728x90

 

1๏ธโƒฃ Comparator์™€ Comparable

์ด์ „์— Arrays.sort()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์•Œ์•„์„œ ์ •๋ ฌ๋์—ˆ๋Š”๋ฐ ์ด๊ฑด ์‚ฌ์‹ค Comparatorํด๋ž˜์Šค์˜ Comparable ์˜ ๊ตฌํ˜„์— ์˜ํ•ด ์ •๋ ฌ๋˜์—ˆ๋˜ ๊ฒƒ์ด๋‹ค. 

Comparator์™€ Comparable์€ ๋ชจ๋‘ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ปฌ๋ ‰์…˜์„ ์ •๋ ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Comparable ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์€ ๊ฐ™์€ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ผ๋ฆฌ ์„œ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋“ค, ์ฃผ๋กœ Integer์™€ ๊ฐ™์€ wrapper ํด๋ž˜์Šค์™€ String, Date, File ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ์ฆ‰  ์ž‘์€๊ฐ’์—์„œ๋ถ€ํ„ฐ ํฐ ๊ฐ’์˜ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. 

-> ๊ทธ๋ž˜์„œ Comparable ์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

 

compare()์™€ compareTo()๋Š” ์„ ์–ธ ํ˜•ํƒœ์™€ ์ด๋ฆ„๋งŒ ์‚ด์ง ๋‹ค๋ฅผ ๋ฟ ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•œ๋‹ค๋Š” ๊ธฐ๋Šฅ์„ ๋ชฉ์ ์œผ๋กœ ๊ณ ์•ˆ๋œ ๊ฒƒ์ด๋‹ค. 

compareTo()์˜ ๋ฐ˜ํ™˜๊ฐ’์€ int์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋น„๊ตํ•˜๋Š” ๋‘ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์œผ๋ฉด 0, ๋น„๊ตํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์Œ์ˆ˜, ํฌ๋ฉด ์–‘์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ compare()๋„ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•ด์„œ ์Œ์ˆ˜, 0, ์–‘์ˆ˜ ์ค‘์˜ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

 

Comparable : ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ 
Comparator : ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€ ์™ธ์— ๋‹ค๋ฅธ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ 

-> Comparable ์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€๋งŒ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค๋˜๊ฐ€ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๊ธฐ์ค€์— ์˜ํ•ด์„œ ์ •๋ ฌ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์„ ๋•Œ Comparator๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์ •๋ ฌ๊ธฐ์ค€์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

-> Arrays.sort()๋Š” ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ, Comparator๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด ์— ๊ตฌํ˜„๋œ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ๋‹ค. (์ฃผ๋กœ Comparable ์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ๊ฐ์ฒด๋‹ค.)

 

-> String์˜ Comparable ๊ตฌํ˜„์€ ๋ฌธ์ž์—ด์ด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ์ž‘์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋ฌธ์ž์—ด์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์€ ๊ณต๋ฐฑ, ์ˆซ์ž, ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž์˜ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

-> CASE_INSENSTIVE_ORDER ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์„ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์—†์ด ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

-> String์˜ ๊ธฐ๋ณธ ์ •๋ ฌ์„ ๋ฐ˜๋Œ€๋กœ (๋‚ด๋ฆผ์ฐจ์ˆœ)์œผ๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ String์— ๊ตฌํ˜„๋œ compareTo()์˜ ๊ฒฐ๊ณผ์— -1์„ ๊ณฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

2๏ธโƒฃ HashSet

HashSet์€ Set์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์ปฌ๋ ‰์…˜์ด๋‹ค. Set์ธํ„ฐํŽ˜์ด์Šค์˜ ํŠน์ง•๋Œ€๋กœ HashSet์€ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

HashSet์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” add ๋ฉ”์„œ๋“œ๋‚˜ addAll๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋งŒ์ผ HashSet์— ์ด๋ฏธ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์š”์†Œ์™€ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์ด ๋ฉ”์„œ๋“œ๋“ค์€ false๋ฅผ ๋ฐ˜ํ™˜ํ•จ์œผ๋กœ์จ ์ค‘๋ณต๋œ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์— ์‹คํŒจํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฐ๋‹ค. 

 

ArrayList์™€ ๊ฐ™์ด List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜๊ณผ ๋‹ฌ๋ฆฌ HashSet์€ ์ €์žฅ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ €์žฅ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด LinkedHashSet์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. 

 

-> ๊ฒฐ๊ณผ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ค‘๋ณต๋œ ๊ฐ’๋“ค์€ ์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

add ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ HashSet์— ์ด๋ฏธ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ , ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ด ์‹คํŒจํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ์œ„ํ•ด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ด๋•Œ 1์€ ๋‘๋ฒˆ ์ถœ๋ ฅ๋˜์—ˆ๋Š”๋ฐ, ๋‘˜๋‹ค 1์ด์ง€๋งŒ ํ•˜๋‚˜๋Š” String์ธ์Šคํ„ด์Šค์ด๊ณ , ํ•˜๋‚˜๋Š” Integer์ธ์Šคํ„ด์Šค๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

Set์„ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋Š” List๋ฅผ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅํ•œ ์ˆœ์„œ์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

-> Math.random()์„ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰ํ•  ๋•Œ ๋งˆ๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ณ , HashSet์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ ๋กœ๋˜๋ฒˆํ˜ธ๋ฅผ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ์ด๋‹ค. 

๋ฒˆํ˜ธ๋ฅผ ํฌ๊ธฐ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Collection ํด๋ž˜์Šค์˜ sort(List list)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

sort๋ฉ”์„œ๋“œ๋Š” ์ธ์ž๋กœ List ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— LinkedListํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž LinkedList๋ฅผ ์ด์šฉํ•ด์„œ HashSet์— ์ €์žฅ๋œ ๊ฐ์ฒด๋“ค์„ LinkedList์— ๋‹ด์•„์„œ ์ฒ˜๋ฆฌํ–ˆ๋‹ค. 

 

->  HashSet์˜ add ๋ฉ”์„œ๋“œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๊ธฐ์กด์— ์ €์žฅ๋œ ์š”์†Œ์™€ ๊ฐ™์€ ๊ฒƒ์ธ์ง€ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์š”์†Œ์˜ equals()์™€ hashcode()๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— equals()์™€ hashCode()๋ฅผ ๋ชฉ์ ์— ๋งž๊ฒŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•œ๋‹ค. 

(์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฆ„๊ณผ ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ๊ฐ์ฒด๋กœ ์ธ์‹ํ•  ๊ฒƒ์ด๋‹ค.) 

 

Personํด๋ž˜์Šค์—์„œ ๋‘ ์ธ์Šคํ„ด์Šค์˜ name๊ณผ age๊ฐ€ ๊ฐ™์œผ๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก equals()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  hashCode()๋Š” Stringํด๋ž˜์Šค์˜ hashCode()๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค. 

Stringํด๋ž˜์Šค์˜ hashCode()๋Š” ์ž˜ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

-> ์ด ์˜ˆ์ œ๋Š” ๋‘ ๊ฐœ์˜ HashSet์— ์ €์žฅ๋œ ๊ฐ์ฒด๋“ค์„ ๋น„๊ตํ•ด์„œ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค€๋‹ค, 

๊ทผ๋ฐ retainAll, addAll, removeAll ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ข€ ๋” ์‰ฝ๊ฒŒ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ธดํ•˜๋‹ค. 

 

 

3๏ธโƒฃ TreeSet

TreeSet์€ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (binary search tree)๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์ด๋‹ค. 

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ์ •๋ ฌ, ๊ฒ€์ƒ‰, ๋ฒ”์œ„๊ฒ€์ƒ‰์— ๋†’์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

 

TreeSet์—ญ์‹œ Set์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ •๋ ฌ๋œ ์œ„์น˜์— ์ €์žฅํ•˜๋ฏ€๋กœ ์ €์žฅ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ node๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋กœ ๊ฐ ๋…ธ๋“œ์— ์ตœ๋Œ€ 2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฃจํŠธ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ณ„์† ํ™•์žฅํ•ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ๋…ธ๋“œ์˜ ์™ผ์ชฝ์—๋Š” ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ์˜ค๋ฅธ์ชฝ์—๋Š” ํฐ ๊ฐ’์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค. 

์ปดํ“จํ„ฐ๋Š” ์•Œ์•„์„œ ๊ฐ’์„ ๋น„๊ตํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— TreeSet์— ์ €์žฅ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ Comparable์„ ๊ตฌํ˜„ํ•˜๋˜๊ฐ€ ์•„๋‹ˆ๋ฉด TreeSet์—๊ฒŒ Comparator๋ฅผ ์ œ๊ณตํ•ด์„œ ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด TreeSet์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

TreeSet์€ ์ •๋ ฌ๋œ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ๊ฐ’ ๊ฒ€์ƒ‰๊ณผ ๋ฒ”์œ„๊ฒ€์ƒ‰(์˜ˆ๋ฅผ ๋“ค๋ฉด 3๊ณผ 7์‚ฌ์ด์˜ ๋ฒ”์œ„์— ์žˆ๋Š” ๊ฐ’์„ ๊ฒ€์ƒ‰)ํ•  ๋•Œ ๋น ๋ฅด๋‹ค. 

์ €์žฅ๋œ ๊ฐ’์˜ ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•ด์„œ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๊ฐ’์˜ ๊ฐœ์ˆ˜๊ฐ€ 10๋ฐฐ ์ฆ๊ฐ€ํ•ด๋„ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š”๋ฐ ํ•„์š”ํ•œ ๋น„๊ต ํšŸ์ˆ˜๊ฐ€ 3~4๋ฒˆ๋งŒ ์ฆ๊ฐ€ํ•  ์ •๋„๋กœ ๊ฒ€์ƒ‰ ํšจ์œจ์ด ๋›ฐ์–ด๋‚œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

 

๊ทผ๋ฐ ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ €์žฅ ์œ„์น˜๋ฅผ ์ฐพ์•„์„œ ์ €์žฅํ•ด์•ผํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋ฅผ ์žฌ๊ตฌ์„ฑํ•ด์•ผํ•˜๋ฏ€๋กœ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ๊ฐ„์€ ๋” ๊ฑธ๋ฆฐ๋‹ค. ๋Œ€์‹  ๋ฐฐ์—ด์ด๋‚˜ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ๊ธฐ๋Šฅ์ด ๋” ๋›ฐ์–ด๋‚˜๋‹ค.

 

 

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (binary search tree)
- ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ ๋‘๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. 
- ์™ผ์ชฝ ์ž์‹๋…ธ๋“œ์˜ ๊ฐ’์€ ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ณ  ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์€ ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค. 
- ๋…ธ๋“œ์˜ ์ถ”๊ฐ€ ์‚ญ์ œ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. (์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ) 
- ๊ฒ€์ƒ‰(๋ฒ”์œ„ ๊ฒ€์ƒ‰)๊ณผ ์ •๋ ฌ์— ์œ ๋ฆฌํ•˜๋‹ค.
- ์ค‘๋ณต๋œ ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ๋ชปํ•œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

728x90