์ ์ฒด ๊ธ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. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 12 ๋ค์