๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๋ฃŒ๊ตฌ์กฐ15

[Java] Graph (Adjacency Matrix, Adjacency List) ์ •์ (Vertex)๊ณผ ๊ฐ„์„ (Edge)๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ, Graph(G) = (Vertex(V), Edge(E)) Graph ์šฉ์–ด ์ •์ (Vertex) - ๋…ธ๋“œ, ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ฒด๊ฐ„์„ (Edge) - ์ •์  ๊ฐ„ ์ด์–ด์ ธ ์žˆ๋Š” ์„ ๊ฐ€์ค‘์น˜(Weight) - ์ •์  ๊ฐ„์— ๊ฑฐ๋ฆฌ, ๋น„์šฉ (๊ฐ„์„ ์˜ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹์Œ)๊ฒฝ๋กœ(Path) - ์ถœ๋ฐœ ์ •์ ์—์„œ ๋„์ฐฉ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ์ณ ๊ฐ„ ์ˆœ์„œ์ˆœํ™˜(Cycle) - ๊ฒฝ๋กœ์˜ ์ถœ๋ฐœ ์ •์ ๊ณผ ๋„์ฐฉ ์ •์ ์ด ๊ฐ™์€ ๊ฒฝ์šฐ์ฐจ์ˆ˜(Degree) - ์ •์ ์— ๋ถ™์€ ๊ฐ„์„  ์ˆ˜์ง„์ž… ์ฐจ์ˆ˜(In-Degree) - ์ •์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„  ์ˆ˜์ง„์ถœ ์ฐจ์ˆ˜(Out-Degree) - ์ •์ ์—์„œ ๋‚˜๊ฐ€๋Š” ๊ฐ„์„  ์ˆ˜Graph ์ข…๋ฅ˜ ์œ ํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Graph) - ํŠน์ • ์ •์ ์—์„œ ํŠน์ • ์ •์ ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„(UnDire.. 2024. 7. 9.
[Java] Binary Search Tree ์•ž ํฌ์ŠคํŒ…์—์„œ ์ž‘์„ฑํ•œ Tree์˜ ๋น„ํšจ์œจ์ ์ธ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋‹ค.ํŠธ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” Binary Tree์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ž์‹์ด Left, Right๋งŒ ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Log_2 (N) ๋ฒˆ๋งŒ์— ๋ชจ๋“  ์ˆ˜ํ–‰์„ ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜, inorder๋ฅผ ์ˆ˜ํ–‰ ์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. package com.study.datastructrue.nonlinear.binarysearchtree;public class Node { int value; Node left; Node right; public Node(int value) { this.value = value; left = null;.. 2024. 7. 8.
[Java] Tree ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜ : Tree, Binary Tree, Binary Serach Tree, Balanced Binary Serach Tree, Heap, Trie์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ Tree์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘์„ฑํ•ด๋ณด์ž. Tree๋ž€ ? Node์™€ Edge๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๋น„์ˆœํ™˜ Graph์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค. ๊ทธ๋ž˜์„œ DAG(Directed Acyclic Graphs)๋ผ๊ณ ๋„ ํ•œ๋‹ค.๊ทธ๋Ÿผ Graph๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด ๋˜์ง€ ์™œ Tree๋ƒ๋Š” ์˜์‹ฌ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.Tree๋Š” Graph์—์„œ ๋ช‡๊ฐ€์ง€ ํŠน์„ฑ์„ ๋” ๊ฐ€์ง„๋‹ค. 1. ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.2. ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.3. ๋…ธ๋“œ๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.4. ์ž์‹์ด 0๊ฐœ์ธ ๊ฒฝ์šฐ ๋‹จ๋ง๋…ธ๋“œ(Leaf Node)๋ผ๊ณ  ํ•œ๋‹ค.5.. ์œ„ ํŠน์„ฑ์„ ์ง€ํ‚ค๋Š” .. 2024. 7. 7.
8. ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก (PCB, Process Control Block) PCB๋ž€? ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์€ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋‹จ์œ„์ด๋‹ค. PCB ํ•˜๋‚˜์—๋Š” ํ”„๋กœ์„ธ์Šค ์ •๋ณด(PID, PPID, Process Status, ... )๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์€ ์™ธ์šฐ๊ณ  ์žˆ์„ ํ•„์š”๋Š” ์—†๋‹ค. ์‹ค์ œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋  ๋•Œ, ์ด ์ •๋ณด๋ฅผ ์ปจํŠธ๋กคํ•˜๊ฒŒ ๋œ๋‹ค. PCB๊ฐ€ ์™œ ํ•„์š”ํ• ๊นŒ? ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ค‘๊ฐ„์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ CPU๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž ์‹œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐœ์ƒํ•ด์•ผํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” CPU Idle Time์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์ด ๋•Œ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  interrupt๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๊ธฐ์กด์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ธฐ์กด์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ(Context Switching).. 2024. 4. 21.
7. ํ”„๋กœ์„ธ์Šค (Process) ๋ณธ๊ฒฉ์ ์ธ ์šด์˜์ฒด์ œ ๊ฐœ๋… ์ด์ „๊นŒ์ง€๋Š” ์šด์˜์ฒด์ œ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ํ๋ฆ„์ด๋‚˜ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์„ ์„ค๋ช…ํ•˜๋Š” ๋‚ด์šฉ์ด์—ˆ๋‹ค. ์šด์˜์ฒด์ œ์˜ ์‹œ์ž‘์„ ์•Œ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋ž€ ๋„๋Œ€์ฒด ๋ฌด์—‡์ผ๊นŒ? ์šฐ๋ฆฌ๋Š” Chrome, Kakao Talk์™€ ๊ฐ™์€ Application์„ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด ๋…€์„๋“ค์€ HDD๋‚˜ SSD์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค. ๋ฐ”๋กœ๊ฐ€๊ธฐ icon์— ๋Œ€ํ•ด '์šฐํด๋ฆญ - ์†์„ฑ - ํŒŒ์ผ์œ„์น˜์—ด๊ธฐ'๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์ •ํ™•ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. windows์—์„œ๋Š” Chrome.exe์™€ ๊ฐ™์€ *.exe ํ™•์žฅ์ž๊ฐ€ ๋ถ™๋Š”๋ฐ ์ด๊ฒƒ์„ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์•ž์—์„œ ํ”„๋กœ์„ธ์Šค๋„ *.exe๋ผ๊ณ  ๋‹ค๋ฃฌ์ ์ด ์žˆ๋‹ค. ๋งž์ง€๋งŒ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. exe ํŒŒ์ผ์—๋Š” ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ, ํž™ ๊ณต๊ฐ„์ด ๋ชฉ์  ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š”๋ฐ ์ด ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋Š”๋ฐ ์‹คํ–‰ .. 2024. 4. 21.
๋ฐฑ์ค€ - [BOJ 3085] ์‚ฌํƒ•๊ฒŒ์ž„ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ ธ์ง€(BOJ)์—์„œ ์ œ๊ณต ๋˜๋Š” 3085๋ฒˆ ๋ฌธ์ œ๋Š” ๋ธŒ๋ฃจํŠธ ํฌ์Šค(Brute-Froce, ์™„์ „ ํƒ์ƒ‰) ์œ ํ˜•์ด๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” code.plus ๊ธฐ์ดˆ 2/2, ๋ธŒ๋ฃจํŠธํฌ์Šค์— ๊ฒŒ์‹œ๋œ ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” ์–ด๋ ธ์„ ์ ์— "๋ด„๋ณด๋‹ˆ (Bomboni)" ๊ฒŒ์ž„์„ ์ฆ๊ฒจํ–ˆ๋‹ค. ๊ฐ€์žฅ ์ฒ˜์Œ์— N×Nํฌ๊ธฐ์— ์‚ฌํƒ•์„ ์ฑ„์›Œ ๋†“๋Š”๋‹ค. ์‚ฌํƒ•์˜ ์ƒ‰์€ ๋ชจ๋‘ ๊ฐ™์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์‚ฌํƒ•์˜ ์ƒ‰์ด ๋‹ค๋ฅธ ์ธ์ ‘ํ•œ ๋‘ ์นธ์„ ๊ณ ๋ฅธ๋‹ค. ๊ทธ ๋‹ค์Œ ๊ณ ๋ฅธ ์นธ์— ๋“ค์–ด์žˆ๋Š” ์‚ฌํƒ•์„ ์„œ๋กœ ๊ตํ™˜ํ•œ๋‹ค. ์ด์ œ, ๋ชจ๋‘ ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ๊ฐ€์žฅ ๊ธด ์—ฐ์† ๋ถ€๋ถ„(ํ–‰ ๋˜๋Š” ์—ด)์„ ๊ณ ๋ฅธ ๋‹ค์Œ ๊ทธ ์‚ฌํƒ•์„ ๋ชจ๋‘ ๋จน๋Š”๋‹ค. ์‚ฌํƒ•์ด ์ฑ„์›Œ์ง„ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ƒ๊ทผ์ด๊ฐ€ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ์‚ฌํƒ•์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ๋ณด๋“œ์˜ ํฌ๊ธฐ N์ด .. 2024. 3. 1.
๋ฐฑ์ค€ - [BOJ 12094] A์™€ B ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ ธ์ง€(BOJ)์—์„œ ์ œ๊ณต ๋˜๋Š” 12094๋ฒˆ ๋ฌธ์ œ๋Š” ๊ทธ๋ฆฌ๋””(Greedy, ํƒ์š•๋ฒ•) ์œ ํ˜•์ด๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” code.plus ์ค‘๊ธ‰ 1/3, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ฒŒ์‹œ๋œ ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ ์ˆ˜๋นˆ์ด๋Š” A์™€ B๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์˜์–ด ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ AB (Abdominal์˜ ์•ฝ์ž), BAA (์–‘์˜ ์šธ์Œ ์†Œ๋ฆฌ), AA (์šฉ์•”์˜ ์ข…๋ฅ˜), ABBA (์Šค์›จ๋ด ํŒ ๊ทธ๋ฃน)์ด ์žˆ๋‹ค. ์ด๋Ÿฐ ์‚ฌ์‹ค์— ๋†€๋ž€ ์ˆ˜๋นˆ์ด๋Š” ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋‘ ๋ฌธ์ž์—ด S์™€ T๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, S๋ฅผ T๋กœ ๋ฐ”๊พธ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๋ฌธ์ž์—ด์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌธ์ž์—ด์˜ ๋’ค์— A๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๊ณ  ๋’ค์— B๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ์ด์šฉํ•ด์„œ S๋ฅผ T๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” .. 2024. 2. 29.
6. STL ์‚ฌ์šฉํ•˜๊ธฐ - std::list STL ์ด๋ž€? C++ ์—์„œ ์ œ๊ณตํ•˜๋Š” STandard Library๋ฅผ STL์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ list์— ๋Œ€ํ•ด ์ง์ ‘ ์„ค๊ณ„ํ•ด๋ณด์•˜๊ณ  list์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์ถฉ๋ถ„ํ–ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” STL์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ง€ ์ƒ๊ฐํ•ด๋ณด๋„๋ก ํ•˜์ž. โ€ป ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” Method๋Š” ์ œ์™ธํ•œ๋‹ค. (ํšจ์œจ์  ์‚ฌ์šฉ) std::list Construct Method Description (constuctor) ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ์‹œ ์ž…๋ ฅ ๊ฐ’ operator= = ๊ธฐํ˜ธ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ• Iterators Method Description begin() ๋ฆฌ์ŠคํŠธ Head์— ์†ํ•œ ๋ฐ์ดํ„ฐ ์œ„์น˜ end() ๋ฆฌ์ŠคํŠธ ๋งˆ์ง€๋ง‰ ์œ„์น˜ != Tail, null ๊ฐ’ rbegin.. 2024. 2. 11.
5. ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Circular Linked List) ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€? ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ๋์ด ์ฒ˜์Œ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. STL์—๋„ ๊ตฌํ˜„๋˜์–ด์žˆ์ง€ ์•Š๊ณ  ์•„์ง ํ•™์ƒ ์ˆ˜์ค€์ด์ง€๋งŒ, ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋ณธ ์ ์ด ๋งŽ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹จ์ˆœํ•˜๊ฒŒ๋งŒ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•  ๊ฒƒ์ธ๋ฐ, ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (์‹ค์ œ๋กœ ์ˆœํ™˜์ ์ธ ์š”์†Œ๋Š” ํ ๋˜๋Š” ์žฌ๊ท€๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋“ฏ) ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Circular Linked List) ๊ตฌํ˜„ํ•˜๊ธฐ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ #pragma once template class Node { public: Node(T data); T getData() const; Node* getNext() const; Node* getPrev() const; void setNext(Node* .. 2024. 2. 10.