Study/Java91 [TIL] ์ฝ๋ฉํ ์คํธ โ๐ป ์๊ณ ๋ฆฌ์ฆ - ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ต์ ์ ์ ํ - ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ ? ์ ๋ ฅ๊ฐ์ด ์ปค์ง์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ ์๊ฐ์ ๋น์จ์ ์ต์ํ โ๐ป ์์ฌ์ฝ๋ pseudocode - ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ์ผ์ ์ธ์ด๋ก ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ๋ ผ๋ฆฌ๋ฅผ ๋จผ์ ์์ฑ - ๊ฐ์ธ์ ๊ธฐํธ์ ๋ง๊ฒ ์์ฑํ๋ ์์ ๋ง์ ์์น์ ๋ง๋ค์ด ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ฉฐ ๋ค๋ฅธ ์ฌ๋์ด ์ดํด ๊ฐ๋ฅํด์ผ ํจ ๐ ์์ฌ์ฝ๋ ์ฌ์ฉ์ ์ฅ์ โ ์๊ฐ ๋จ์ถ - ๋ฌธ์ ๊ฐ ๋ณต์กํด์ง๊ฑฐ๋ ์ฝ๋ ์์ด ๊ธธ์ด์ง์๋ก ๊ตฌ์ฒด์ ์ด๊ณ ์ธ์ธํ ๋ก์ง์ ๊ธฐ์ต์ด ์ด๋ ค์ โก ๋๋ฒ๊น ์ฉ์ด - ์ฝ๋ ์์ฑ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์์ฌ์ฝ๋๋ฅผ ํ์ธํ๋ฉด ์์ธ ํ์ ์ฉ์ด โข ์ํํ ์ปค๋ฎค๋์ผ์ด์ - ๊ฐ๋ฐ ์ธ์ด์ ์ต์ํ์ง ์์๋ ์๋ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ดํดํ๋๋ฐ ๋์์ด ๋จ ๐ช๐ป ๋ณต์ก๋ : ๊ณต๊ฐ ๋ณต์ก๋ .. 2022. 5. 31. [TIL] ์๋ฃ๊ตฌ์กฐ : ํธ๋ฆฌ, ๊ทธ๋ํ, ์ด์งํ์ํธ๋ฆฌ ๐๐ป ํธ๋ฆฌ Tree - ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์๋์ ์๋ ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ๋ฌด๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒจ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ - ๊ทธ๋ํ ์ค ๋จ๋ฐฉํฅ ๊ทธ๋ํ๋ก ํ๋์ ๋ฟ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ - ๊ณ์ธต์ , ๋น์ ํ๊ตฌ์กฐ - ex) ํ์ผ ํ์๊ธฐ, ๊ฐ๊ณ๋, ์กฐ์ง๋, ์ถ๊ตฌ ๋์งํ ๋ฑ โช๏ธ ๋ฃจํธ Root - ํ๋์ ๊ผญ์ง์ ๋ฐ์ดํฐ๋ก ๋ฃจํธ๋ฅผ ์์์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ (edge)๋ก ์ฐ๊ฒฐ โช๏ธ ๋ ธ๋ Node - ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋๋ก ํ๋ฉฐ ๋ ๋ ธ๋๊ฐ ์ํ๋ก ์ฐ๊ฒฐ๋๋ฉด ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง โช๏ธ ๋ฆฌํ Leaf - ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ ์ง์ ์ผ๋ก ์์ ๋ ธ๋๊ฐ ์์ ๐ ํธ๋ฆฌ ๋ฉ์๋ โ addChildNode(value) - ์ ๋ ฅ๋ฐ์ value๋ฅผ ๊ณ์ธต์ ์ผ๋ก ์ถ๊ฐ โก removeChildNode(node) - ์ ๋ ฅ๋ฐ์ ๋ ธ๋๋ฅผ ์ญ์ โข getChi.. 2022. 5. 29. [TIL] ์๋ฃ๊ตฌ์กฐ : ์คํ, ํ ๐๐ป ์๋ฃ๊ตฌ์กฐ - ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ฌถ์์ ์ ์ฅํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ - ์ํฉ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์์ด ํน์ ํ ์ํฉ์ ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ํนํ ๐ก ๋ฐ์ดํฐ ? - ๋ฌธ์, ์ซ์, ์๋ฆฌ, ๊ทธ๋ฆผ, ์์ ๋ฑ ์ค์ํ์ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ๊ฐ - ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ์ ์ฅํด๋๋ ๊ฒ์ ๋ฐ์ดํฐ ํ์ฉ์ ์ ๋ฆฌํจ ๐ Stack ์คํ Stack stack = new Stack(); - ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์๋ ๊ตฌ์กฐ - ๊ฐ์์นฉ ํต์ด Stack, ๊ฐ์์นฉ์ ๋ฐ์ดํฐ๋ก ๋น์ ํ ์ ์์ - ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ์ฒซ ๋ฒ์งธ ๊ฐ์์นฉ์ ๊ฐ์ฅ ๋์ค์ ๋์ค๋ฉฐ, ๊ฐ์ฅ ๋์ค์ ๋ค์ด๊ฐ ์ธ ๋ฒ์งธ ๊ฐ์์นฉ์ด ๊ฐ์ฅ ๋จผ์ ๋์ด = LIFO - ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ๋์ ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ์ ํ์ ์ ๊ทผ - ๊ฐ์์นฉ์ ๋ฃ๋ ๊ฒ, ์ฆ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ.. 2022. 5. 27. [TIL] ์ฌ๊ทํจ์ โ๐ป ์ฌ๊ทํจ์ ๐ก ์ฌ๊ท Recursion ? ๋ฌธ์ ๋ฅผ ๋ ์๊ฒ ๋๋ ๋ณด๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ๐ ์ข ๋ฃ ์กฐ๊ฑด์ด ์์ด์ผ ํจ - ์ข ๋ฃ์กฐ๊ฑด์ด ์์ผ๋ฉด ์๊ธฐ ์์ ์ ๊ณ์ ํธ์ถํ์ฌ ์๋ฌ ๋ฐ์ ๐ ํฉํ ๋ฆฌ์ผ ๋ฌธ์ package code; public class FactorialTest { public static void main(String[] args) { int input = 5; System.out.println(fact(input)); } public static int fact(int n){ if (n 2022. 5. 24. [TIL] ์๋ฐ ๊ฐ์ ๋จธ์ ๐ซฐ๐ป ์๋ฐ ๊ฐ์ ๋จธ์ (Java Virtual Machine), JVM - ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ๋๊ตฌ - ์๋ฐ๋ก ์์ฑํ ์์ค ์ฝ๋๋ฅผ ํด์ํ์ฌ ์คํํ๋ ๋ณ๋์ ํ๋ก๊ทธ๋จ - ์๋ฐ ํ๋ก๊ทธ๋จ๊ณผ ์ด์์ฒด์ ์ฌ์ด์ ํต์ญ๊ฐ - ์๋ฐ๋ C++์ฒ๋ผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ฉด์๋ ์ด์์ฒด์ ๋ก ๋ถํฐ ๋ ๋ฆฝ๋์ด์์ → ์๋ฐ์ ๋ ๋ฆฝ์ฑ์ ๊ตฌํํ๋ ๊ฒ์ด JVM - ์๋ฐ๋ JVM๊ณผ ๋งค๊ฐํ์ฌ ์ด์์ฒด์ ์ ์ํต - ๊ฐ ์ด์์ฒด์ ์ ์ ํฉํ ๋ฒ์ ์ JVM์ด ๋ฐ๋ก ์กด์ฌํจ → ์ด์์ฒด์ ์ ๋ง๊ฒ ์ฝ๋๋ฅผ ๋ณํํ์ฌ ์คํํ์ฌ ๋ ๋ฆฝ์ฑ์ ๊ฐ์ง ์ ์์ ๐ JVM ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ : Runtime Data Area - JVM์ ์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋ก๋๋์ด ์คํ๋ ๋ ํน์ ๊ฐ์ด๋ ๋ฐ์ดํธ์ฝ๋, ๊ฐ์ฒด, ๋ณ์ ๋ฑ์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด์ผ ํจ → ์ด๋ค์ ์ ๋ณด๋ฅผ ๋ด.. 2022. 5. 22. [TIL] ์ค๋ ๋ ๐คฒ๐ป ์ค๋ ๋ Thread - ํ๋์ ์ฝ๋ ์คํ ํ๋ฆ ๐ ๋ฉํฐ ์ค๋ ๋ Multi-Thread - ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ ๊ฐ์ง ์ด์์ ์์ ์ ์ฒ๋ฆฌํ๋ ์ค๋ ๋ - ํ๋ก์ธ์ค ? ๋์ํ๊ณ ์๋ ํ๋ก๊ทธ๋จ - ํ๋ก๊ทธ๋จ ๋ด๋ถ์์์ ๋ฉํฐ ํ์คํน - ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ค๋ฉด ๋ฉํฐ์ค๋ ๋๊ฐ ๋์ฌ ์ ์์ ๐ ๋ฉ์ธ ์ค๋ ๋ Main-Thread - main() ๋ฉ์๋๋ฅผ ์คํํ๋ฉด์ ์์๋จ - main()๋ฉ์๋์ ์ฒซ ์ฝ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ์คํํ๊ณ ๋ง์ง๋ง ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ return๋ฌธ ๋ง๋๋ฉด ์ข ๋ฃ๋จ - ๋ฉํฐ ์ค๋ ๋๋ฅผ ์์ฑํ์ฌ ๋ฉํฐ ํ์คํน ์ํ ๊ฐ๋ฅ - ์์ ์ค ํ์์ ๋ฐ๋ผ ์ค๋ ๋๋ค์ ๋ง๋ค์ด ๋ณ๋ ฌ๋ก ์ฝ๋ ์คํ ๊ฐ๋ฅ ๐ก ExecutorService ๋ผ์ด๋ธ๋ฌ๋ฆฌ - ๋ณ๋ ฌ ์์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ - .. 2022. 5. 22. [TIL] ํ์ผ ์ ์ถ๋ ฅ ๐๐ป ํ์ผ ์ ์ถ๋ ฅ ๐ InputStream, OutputStream : ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ - ์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ → ๋๋ฌธ์ ์ ์ถ๋ ฅ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฐ๊ฐ ์คํธ๋ฆผ ํ์ - ๋ฐ์ดํธ ๊ธฐ๋ฐ์ ์ ์ถ๋ ฅ ๋จ์๊ฐ 1byte โช๏ธ FileInputStream : ํ์ผ ๋ด์ฉ ์ฝ๊ธฐ - ํ์ผ๋ก๋ถํฐ ๋ด์ฉ์ ๋ฐ์ดํธ๋ก ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํธ ๋จ์๋ก ์ถ๋ ฅํ ์ ์๋ ํด๋์ค - InputStream์ ์์๋ฐ์ - ์ถ๋ฐ ์ง์ ๊ณผ ๋์ฐฉ ์ง์ ์ ์ฐ๊ฒฐํ๋ ํต๋ก(์คํธ๋ฆผ) ์์ฑ - ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ์ง๋ง ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๋ฆผ → ๋ฒํผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํด๋์ค์ ๋ง์ด ์ฌ์ฉ - ๋ฒํผ ? ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ์ฌ๋ฌ ๋ฐ์ดํธ๋ฅผ ์ ์ฅํ์ฌ ํ๋ฒ์ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถ๋ ฅ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์์ ์ ์ฅ๊ณต๊ฐ - BufferedInputSt.. 2022. 5. 21. [TIL] ์คํธ๋ฆผ ๐ช๐ป ์คํธ๋ฆผ Stream - ๋ฐ์ดํฐ์ ํ๋ฆ - ๋ฐฐ์ด๊ณผ ์ปฌ๋ ์ ์ ํจ์ํ์ผ๋ก ์ฒ๋ฆฌ - ๋ฐฐ์ด ๋๋ ์ปฌ๋ ์ ์ธ์คํด์ค์ ํจ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์กฐํฉํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๊ณ ๊ฐ๊ณต๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ - ์ฝ๋์ ์์ ์ค์ด๊ณ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์์ = ์ ์ฅ๊ณต๊ฐ ํ์ ์์ - ๋ฐฐ์ด, ์ปฌ๋ ์ ์ ์ ์ฅ ์์๋ฅผ ํ๋์ฉ ์ฐธ์กฐํด์ ๋๋ค์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋ ๋ฐ๋ณต์ - ๋ค์ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ค๋ฃจ๋ ํ๋ถํ ๋ฉ์๋ ์ ๊ณต ๐ ์คํธ๋ฆผ ํน์ง 1๏ธโฃ ์ ์ธํ - ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ? ์ด๋ป๊ฒ ๋ณด๋ค๋ ๋ฌด์์ ์ํํ๋์ง ๊ด์ฌ์ ๋๋ ํ๋ก๊ทธ๋๋ฐ - ์ ์ธํ ๋ฐฉ์์ผ๋ก ์์ฑํ๋ฉด ๋ด๋ถ ๋์ ์๋ฆฌ๋ฅผ ๋ชฐ๋ผ๋ ์ฝ๋๊ฐ ๋ฌด์จ ์ผ ํ๋์ง ์ดํด ๊ฐ๋ฅ 2๏ธโฃ ๋๋ค์์ผ๋ก ์์ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์ ๊ณต - ์คํธ๋ฆผ์ด ์ ๊ณตํ๋ ๋๋ถ๋ถ์ ์์ ์ฒ๋ฆฌ ๋ฉ์๋๋ ํจ์์ ์ธํฐํ์ด์ค .. 2022. 5. 21. [TIL] ๋๋ค ๐๐ป ๋๋ค Lambda ( ๋งค๊ฐ๋ณ์ ) -> { ์คํ์ฝ๋ } - ์ต๋ช ํจ์๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์ผ๋ก ํจ์ ์งํฅ ์ธ์ด์ ๊ฐ๊น์ - ์ํ์์ ์ฌ์ฉํ๋ ํจ์๋ฅผ ๋ณด๋ค ๋จ์ํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ - ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ฝ๋ ๋ธ๋ก์ด์ง๋ง ๋ฐํ์์ ์ต๋ช ๊ตฌํ ๊ฐ์ฒด ์์ฑ ๐ก ์๋ฐ์์ ๋๋ค์์ ์ฌ์ฉํ๋ ์ด์ ? : ๋๋ค์์ ์ฌ์ฉํ๋ฉด ์๋ฐ ์ฝ๋๊ฐ ๋งค์ฐ ๊ฐ๊ฒฐํด์ง๊ณ ์ปฌ๋ ์ ์ ์์๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ๋งคํํด์ ์ํ๋ ๊ฒฐ๊ณผ ์ง๊ณ ์ฌ์ ๐๋๋ค์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ 1๏ธโฃ ๊ธฐ๋ณธ์์ฑ (ํ์ ๋งค๊ฐ๋ณ์) -> { ... } - ๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์ค๊ดํธ ์คํ๋ธ๋ก์ ์คํํ๋ค๋ ์๋ฏธ 2๏ธโฃ ๋งค๊ฐ๋ณ์๊ฐ 1๊ฐ ์ผ ๋ ( ) ์๋ต ๊ฐ๋ฅ ๋งค๊ฐ๋ณ์ -> { ... } - ๋งค๊ฐ๋ณ์๊ฐ ์๋ค๋ฉด ๊ดํธ ์๋ตํ๋ฉด ์ ๋จ - ํ๋์ ์คํ๋ฌธ๋ง ์๋ค๋ฉด ์ค๊ดํธ๋ ์๋ต ๊ฐ๋ฅ 3๏ธโฃ ๋งค๊ฐ๋ณ์๊ฐ .. 2022. 5. 20. ์ด์ 1 ยทยทยท 4 5 6 7 8 9 10 11 ๋ค์