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

์ „์ฒด ๊ธ€105

๋ฐฑ์ค€ - [BOJ 22856] ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฌธ์ œ๋…ธ๋“œ๊ฐ€ N๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ค‘์œ„ ์ˆœํšŒ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ผ๊ณ  ํ•˜์ž.์ˆœํšŒ์˜ ์‹œ์ž‘์€ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์ด๊ณ  ์ˆœํšŒ์˜ ๋์€ ์ค‘์œ„ ์ˆœํšŒํ•  ๋•Œ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์ด๋‹ค. ์ด๋•Œ ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ 1๋ฒˆ ๋…ธ๋“œ์ด๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค.ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ์˜ ๋์ด๋ผ๋ฉด, ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ 1 ~ 4๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.์œ„ ๊ทธ๋ฆผ์— ์žˆ.. 2024. 7. 8.
[Java] Binary Tree Binary Tree๋Š” ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์„ ํ˜•์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.์•ž์„œ ํฌ์ŠคํŒ…์—์„œ BST(Binary Search Tree)์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ BST๋„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์™œ Binary Tree๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?Tree Post์—์„œ๋„ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ ์ผ๋ฐ˜ DAG์™€ ๊ฐ™์€ Tree๋Š” ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ์ € Graph์™€ ๋‹ค๋ฆ„์ด ์—†๋‹ค.๊ทธ๋ž˜์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด Binary Tree๋กœ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ ๊ฒƒ์ด๋‹ค. ํฌ๊ฒŒ Binary Tree์˜ ๋‘ ์ข…๋ฅ˜๋ฅผ ์•Œ์•„๋ณด์ž. 1. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ2. ํŽธํ–ฅ ํŠธ๋ฆฌ ์ด ์™ธ์—๋„ ๋งŽ์ง€๋งŒ Binary Tree์˜ ํ•ต์‹ฌ์„ ์„ค๋ช…ํ•˜๊ธฐ์— ๋‘ ๊ฐ€์ง€๊ฐ€ ์ตœ๊ณ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์œ„ ๋‘๊ฐ€์ง€ ๊ฐœ๋…์„ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋Š” BST์˜ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์ด๋‹ค.์•ž์„œ ์ž‘์„ฑํ•œ B.. 2024. 7. 8.
[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.
๋ฐฑ์ค€ - [BOJ 1865] ์›œํ™€ ๋ฌธ์ œ๋•Œ๋Š” 2020๋…„, ๋ฐฑ์ค€์ด๋Š” ์›”๋“œ๋‚˜๋ผ์˜ ํ•œ ๊ตญ๋ฏผ์ด๋‹ค. ์›”๋“œ๋‚˜๋ผ์—๋Š” N๊ฐœ์˜ ์ง€์ ์ด ์žˆ๊ณ  N๊ฐœ์˜ ์ง€์  ์‚ฌ์ด์—๋Š” M๊ฐœ์˜ ๋„๋กœ์™€ W๊ฐœ์˜ ์›œํ™€์ด ์žˆ๋‹ค. (๋‹จ ๋„๋กœ๋Š” ๋ฐฉํ–ฅ์ด ์—†์œผ๋ฉฐ ์›œํ™€์€ ๋ฐฉํ–ฅ์ด ์žˆ๋‹ค.) ์›œํ™€์€ ์‹œ์ž‘ ์œ„์น˜์—์„œ ๋„์ฐฉ ์œ„์น˜๋กœ ๊ฐ€๋Š” ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ์ธ๋ฐ, ํŠน์ดํ•˜๊ฒŒ๋„ ๋„์ฐฉ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ์ž‘์„ ํ•˜์˜€์„ ๋•Œ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋’ค๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค. ์›œํ™€ ๋‚ด์—์„œ๋Š” ์‹œ๊ณ„๊ฐ€ ๊ฑฐ๊พธ๋กœ ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ๋„ ์ข‹๋‹ค.์‹œ๊ฐ„ ์—ฌํ–‰์„ ๋งค์šฐ ์ข‹์•„ํ•˜๋Š” ๋ฐฑ์ค€์ด๋Š” ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆ์ฆ์— ๋น ์กŒ๋‹ค. ํ•œ ์ง€์ ์—์„œ ์ถœ๋ฐœ์„ ํ•˜์—ฌ์„œ ์‹œ๊ฐ„์—ฌํ–‰์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‹ค์‹œ ์ถœ๋ฐœ์„ ํ•˜์˜€๋˜ ์œ„์น˜๋กœ ๋Œ์•„์™”์„ ๋•Œ, ์ถœ๋ฐœ์„ ํ•˜์˜€์„ ๋•Œ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋˜๋Œ์•„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๋ฐฑ์ค€์ด๋ฅผ ๋„์™€ ์ด๋Ÿฐ ์ผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ๋ผ.์ž…๋ ฅ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š”.. 2024. 7. 6.
[์ตœ๋‹จ๊ฒฝ๋กœ] Bellman-Ford Algorithm ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜package com.study.datastructrue.mst;import java.util.ArrayList;import java.util.Arrays;class Pair { T node; V cost; public Pair(T node, V cost) { this.node = node; this.cost = cost; }}public class BellmanFord { static long[] dist = new long[6]; public static void main(String[] args) { // ์ง‘ 1, ํ•™๊ต 2, ๋ฐ•๋ฌผ๊ด€ 3, ์˜ํ™”๊ด€ 4, ๋งˆํŠธ 5 ArrayList>> graph = inpu.. 2024. 7. 6.
Java Fast I/O 3 (feat. BOJ, String, StringBuilder) ์•ž์„  ํฌ์ŠคํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ๋žŒ๋“ค์€ PS์—์„œ ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ StringBuilder๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. StringBuilderabstract sealed class AbstractStringBuilder implements Appendable, CharSequence permits StringBuilder, StringBuffer { byte[] value; byte coder; boolean maybeLatin1; int count; private static final byte[] EMPTYVALUE = new byte[0]; AbstractStringBuilder() { value = EMPTYVALUE; } .. 2024. 7. 6.
Java Fast I/O 2 (feat. BOJ, StringTokenizer, String.split()) ์ด๋ฒˆ ํฌ์ŠคํŠธ์—๋Š” StringTokenizer์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.PS์—์„œ ์–ด๋–ป๊ฒŒ๋“  ์†๋„๋ฅผ ์กฐ๊ธˆ ๋” ๋†’์—ฌ๋ณด๋ ค๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ฃ ?๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ StringTokenizer ์ž…๋‹ˆ๋‹ค. ์ •๋ง StringTokenizer์˜ ์„ฑ๋Šฅ์ด ๊ทธ๋ ‡๊ฒŒ ์šฐ์ˆ˜ํ• ๊นŒ? ์ง์ ‘ ํ…Œ์ŠคํŠธ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.package com.study.datastructrue.string;import java.util.StringTokenizer;public class DevidePerformTest { public static void main(String[] args) { String str = "one two three four five one two three four five one two three four five.. 2024. 7. 6.
Java Fast I/O (feat. BOJ, BufferedReader, BufferedWriter) BOJ JAVA ํ’€์ด์—์„œ ์™œ BufferedReader, BufferedWriter ๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? ์‚ฌ๋žŒ๋“ค์€ PS ์ค‘ ์‹œ๊ฐ„ ํšจ์œจ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ Fast I/O๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.๋ณดํ†ต I/O ์†๋„๋Š” Default I/O, Fast I/O, Custom Fast I/O ๊ฐ€ ์žˆ๋‹ค.์ฐ ๊ณ ์ˆ˜๋“ค์€ ์ข…์ข… Custom Fast I/O๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‚˜๋Š” ๊ธฐ๋ณธ์ ์ธ Fast I/O๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. (์ดˆ๋ณด) Python ์—์„œ๋Š” sys.stdin.readline, C++ ์—์„œ๋Š” ios_base::sync_with_stdio(0), C์—์„œ๋Š” fread() ๋“ฑJava์—์„œ๋Š” BufferedReader ๋‚˜ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด์ž. BufferedR.. 2024. 7. 6.