๐ŸŒป JAVA

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์ž๋ฃŒ๊ตฌ์กฐ - ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary-Search-Tree)

์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด (์ด์ง„ ํŠธ๋ฆฌ์™€ ๋‹ค๋ฅด๋‹ค) ๋ชจ๋“  ์›์†Œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ๋œ๋‹ค. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ๊ฐ’์€ ๋ฃจํŠธ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์˜ค๋ฅธ์ชฝ์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ๊ฐ’์€ ๋ฃจํŠธ์˜ ๊ฐ’๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค. ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์‚ฝ์ž… ์œ„์— ์ด์ง„ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด์„ ์ด์šฉํ•ด์„œ ์‚ฝ์ž…์„ ์œ„ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์‚ฝ์ž… ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๋ฉด, public class BinaryTree { Node root; public void insertNode(int value) { /* root๊ฐ€ ๋น„์—ˆ์„ ๊ฒฝ์šฐ */ if(root == null){ root = new Node(value); }else { Node temp = this.root; while(true) { /* ์™ผ์ชฝ์œผ๋กœ ๊ฐ€์•ผ ํ•˜..

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - BFS(๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰), DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)

BFS (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰) BFS์˜ ์žฅ์  ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ์ ๊ณ  ๊นŠ์ด๊ฐ€ ์–•์€ ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ˆœ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๋ณด๋‹ค ๋น ๋ฆ„ ๋„ˆ๋น„๋ฅผ ์šฐ์„  ํƒ์ƒ‰ํ•˜๊ธฐ์— ๋‹ต์ด ๋˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋„ ์ตœ๋‹จ๊ฒฝ๋กœ์ž„์„ ๋ณด์žฅํ•œ๋‹ค. ์ตœ๋‹จ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์–ด๋Š ํ•œ ๊ฒฝ๋กœ๊ฐ€ ๋ฌดํ•œํžˆ ๊นŠ์–ด์ง„๋‹คํ•ด๋„ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. BFS์˜ ๋‹จ์  ์žฌ๊ท€ํ˜ธ์ถœ์˜ DFS์™€๋Š” ๋‹ฌ๋ฆฌ ํ์— ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ์ •์ ๋“ค์„ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ €์žฅ๊ณต๊ฐ„์ด ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค. ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ํƒ์ƒ‰ํ•ด์•ผํ•˜๋Š” ๋…ธ๋“œ ๋˜ํ•œ ๋งŽ์•„์ง€๊ธฐ์— ๋น„ํ˜„์‹ค์ ์ด๋‹ค. BFS ๊ตฌํ˜„ Queue์— ๋ฃจํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ , ์•„๋ž˜์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค. Queue์—์„œ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ๊บผ๋ƒ…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ , ์ฐจ๋ก€๋Œ€๋กœ ํ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. /..

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

JAVA - STUDY 5์ฃผ์ฐจ ๊ณผ์ œ : ํด๋ž˜์Šค

ํ•™์Šตํ•  ๊ฒƒ ํด๋ž˜์Šค ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• (new ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ) ๋ฉ”์†Œ๋“œ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ƒ์„ฑ์ž ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• this ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ ํด๋ž˜์Šค์˜ ๊ฐœ๋… ๋จผ์ € ํด๋ž˜์Šค์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ, ๊ณต๋ถ€ํ•ด ๋ณด์•˜๋‹ค. ํด๋ž˜์Šค๋ž€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ํ‹€ ๋˜๋Š” ์„ค๊ณ„๋„์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋„์ธ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ , ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•„๋“œ์™€ ๊ฐ์ฒด์˜ ํ–‰๋™์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด(Object) ์‚ฌ์ „์  ์˜๋ฏธ : ๋ฌผ๊ฑด ๋˜๋Š” ๋Œ€์ƒ ๊ฐ์ฒด์˜ ์ƒํƒœ(state)์™€ ํ–‰๋™(behavior)์„ ๊ตฌ์ฒดํ™”ํ•˜๋Š” ํ˜•ํƒœ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, "๋‚˜๋Š” ๊ณผ์ผ์žฅ์ˆ˜์—๊ฒŒ ๋‘ ๊ฐœ์˜ ์‚ฌ๊ณผ๋ฅผ ๊ตฌ๋งคํ–ˆ๋‹ค"๋ผ๋Š” ๋ฌธ์žฅ์„..

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋ฐฑํŠธ๋ž˜ํ‚น(Back-Tracking)

๋ฐฑํŠธ๋ž˜ํ‚น ์ด๋ž€? ๋ฐฑํŠธ๋ž˜ํ‚น์€ ๋ชจ๋“  ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด์ง€๋งŒ, ์กฐ๊ฑด์ด ๋งŒ์กฑํ•  ๋•Œ๋งŒ ์‚ดํŽด๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ›จ์”ฌ ๋น ๋ฅผ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฐฑํŠธ๋ž˜ํ‚น ์‹คํ–‰ ์ˆœ์„œ ๋ฐฑํŠธ๋ž˜ํ‚น์€ DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)์„ ๋จผ์ € ์‹คํ–‰ํ•˜๋ฉด์„œ ๋” ์ด์ƒ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ฉด ๋‹ค์‹œ ๋˜๋Œ์•„ ๊ฐ€์„œ(๋ฐฑํŠธ๋ž˜ํ‚น) ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค. ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์ž˜ ๋  ๊ฒƒ์ด๋‹ค. www.acmicpc.net/step/34 ๋ฐฑํŠธ๋ž˜ํ‚น ๋‹จ๊ณ„ ์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ 1 www.acmicpc.net N๊ณผ M (1) ํ’€์–ด๋ณด๊ธฐ ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง€๋ฉด 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ์ค‘๋ณต ์—†์ด M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, N : 3 , M : 3 ์ผ๋•Œ, ์ค‘๋ณต ์—†์ด ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ถœ๋ ฅ์‹œํ‚ค๋ฉด ๋œ๋‹ค. ---------------------------..

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

JAVA - ๋งจ๋‚  ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด

๋งค๋ฒˆ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ์ดํ•ด๋ฅผ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๋ง‰์ƒ ์‚ฌ์šฉ์„ ํ•ด๋ณด๋ฉด ์ด๊ฒŒ ์™œ ์ด๋ ‡๊ฒŒ ๊ฐ’์ด ์ฐํžˆ์ง€? ๋ผ๋Š” ๊ฒฝํ—˜์ด ๋งŽ์•˜๋‹ค.. ๋‹ค์‹œ ํ•œ๋ฒˆ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šด๋‹ค.. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์  // 1๋ฒˆ ๊ณผ์ • CopyTest c1 = new CopyTest(); People test = new People(10, "a"); c1.man = test; // 2๋ฒˆ ๊ณผ์ • People peo2 = new People(20, "b"); test = peo2; // ์›๋ž˜๋ผ๋ฉด GC์— ์˜ํ•ด new People(100,"100")์ด ์ •๋ฆฌ ๋˜๋Š”๋ฐ, c1.man์ด ์žก๊ณ  ์žˆ์–ด์„œ ์•„์ง ๋Œ€์ƒ์ด ์•„๋‹ˆ๊ฒŒ ๋œ๋‹ค. // ์ถœ๋ ฅ System.out.println(c1.man.age); // 10 (๊ธฐ์กด test์˜ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.) Sy..

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

LinkedList ๊ฐœ๋…, ์‚ฌ์šฉ๋ฒ•, ์ฝ”๋“œ

LinkedList ์˜ ๊ฐœ๋… ArrayList ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ํฐ ๊ณต๊ฐ„์œผ๋กœ (๋˜๋Š” ๋” ์ž‘์€ ๊ณต๊ฐ„์œผ๋กœ) ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. (์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋จ) ๋งŒ์•ฝ ํฌ๊ธฐ๊ฐ€ 5์ธ list์— ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ทธ ๋‹ค์Œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ํ•œ์นธ ์”ฉ ๋ชจ๋‘ ์ด๋™์‹œ์ผœ์•ผ ํ•˜๋ฏ€๋กœ (๋งŒ์•ฝ ํฌ๊ธฐ๊ฐ€ 1์–ต์ด๋ฉด? ์—„์ฒญ๋‚˜๋‹ค.) ์›ํ•˜๋Š” ์ธ๋ฑ์Šค์— ๋ฐ”๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. LinkedList ์—ฐ๊ฒฐ(link)๋œ ๊ตฌ์กฐ์ด๋‹ค. ArrayList์™€ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด ๋ฐ์ดํ„ฐ๋“ค์ด ์—ฌ๊ธฐ์ €๊ธฐ ํฉ์–ด์ ธ ์žˆ๋‹ค. ์žฅ์  : ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ, ์ด์ „ ๊ฐ’๊ณผ ์ถ”๊ฐ€(๋˜๋Š” ์‚ญ์ œ)ํ•  ๊ฐ’์˜ next๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋ฏ€๋กœ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. ๋‹จ์  : ์›ํ•˜๋Š” ์ธ๋ฑ์Šค์— ์ง์ ‘ ์ ‘๊ทผ์ด ์•ˆ๋œ๋‹ค. ๋…ธ๋“œ์—๋Š” [๋ฐ์ดํ„ฐ + ๋‹ค์Œ ๋…ธ๋“œ] ๊ฐ€ ๋“ค์–ด..

iseunghan
'๐ŸŒป JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (6 Page)