Hyo's Inside
[Algorithm] ๊ตฌํ(Implementation)
์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ตฌํ ์ฝ๋ฉ ํ ์คํธ์์ ๊ตฌํ์ด๋ ๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ด๋ค. ์์ ํ์์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๊ณ์ฐํ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๋ฏธํ๊ณ . ์๋ฎฌ๋ ์ด์ ์ ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋จ๊ณ์ฉ ์ฐจ๋ก๋๋ก ์ง์ ์ํํด์ผํ๋ ๋ฌธ์ ์ ํ์ ์๋ฏธํ๋ค. ์ํ์ข์ฐ n * n ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ์ ๋ ฅ ๋ฐ๊ณ ๋ค์ ๋ผ์ธ์ L, R, U, D ์ค ํ๋์ ๋ฌธ์๋ฅผ ์ฐ์์ ์ผ๋ก ์ ๋ ฅ๋ฐ๋๋ค. ์์ํ๋ ํฌ์ธํธ๋ (1, 1) ์ด๋ฉฐ n * n ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ์์ง์์ ๋ฌด์๋๋ค. ํด๋น ๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฌธ์ ์ด๋ค. L : ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ด๋ R : ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋ U : ์๋ก ํ ์นธ ์ด๋ D : ์๋๋ก ํ ์นธ ์ด๋ n ..
[Algorithm] ๊ทธ๋ฆฌ๋(Greedy) : ํ์๋ฒ์ด๋?
๋น์ฅ ์ข์ ๊ฒ๋ง ์ ํํ๋ ๊ทธ๋ฆฌ๋ ๊ทธ๋ฆฌ๋(Greedy) ์๊ณ ๋ฆฌ์ฆ์ ๊ตญ๋ด์์ ๋จ์ด ๊ทธ๋๋ก ๋ฒ์ญํ์ฌ ํ์๋ฒ์ผ๋ก ์๊ฐ๋๋ค. ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ์ด๋ ํ ๋ฌธ์ ๊ฐ ์์ ๋ ๋จ์ ๋ฌด์ํ๊ฒ, ํ์์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํธ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฌ๊ธฐ์ ํ์์ ์ด๋ผ๋ ๋ง์ ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ ์ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ฉด ๋งค ์๊ฐ ๊ฐ์ฅ ์ข์๋ณด์ด๋ ๊ฒ์ ์ ํํ๋ฉฐ, ํ์ฌ์ ์ ํ์ด ๋์ค์ ๋ฏธ์น ์ํฅ์ ๋ํด์๋ ๊ณ ๋ คํ์ง ์๋๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ์ ํ์ ์์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๊ตํ์ ๋ ์ฌ์ ์ ์ธ์ฐ๊ณ ์์ง ์์๋ ํ์ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฌธ์ ์ ํ์ด๋ผ๋ ํน์ง์ด ์๋ค. ์๋ฐ์ฝ๋์ ์๋ก ๋ฐฐ์ฐ๊ณ ์๋ ํ์ด์ฌ ์ฝ๋๋ก ํ์ด๋ณด์๋ค. ํฐ ์์ ๋ฒ์น ๋ค์ํ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ ์ฃผ์ด์ง ์๋ค์ M๋ฒ..
[Algorithm] ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋์ Big-O ๋?
์๊ณ ๋ฆฌ์ฆ์ด๋ ์ด๋ค ๋ชฉ์ ์ ๋ฌ์ฑํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด๋ด๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ์ผ๋ จ์ ๊ณผ์ ๋ค์ ์งํฉ์ ์๋ฏธํ๋ค. ๊ฐ๋ ๋ฃจํธ๋ ๋ค์ํ๋ฉฐ ์ฌ๋ฌ๊ฐ์ง ์ํฉ์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๋ค๋ฅด๋ค. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ฌ ์ฌ์ฉํ๋ค. ๋ณต์ก๋(Complexity)๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ๋ด๋ ์ฒ๋์ด๋ค. ๋ณต์ก๋๋ ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ก ๋๋ ์ ์๋ค. ์๊ฐ ๋ณต์ก๋ ํน์ ํ ํฌ๊ธฐ์ ์ ๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํํ ๋ ์ฐ์ฐ์ด ๋ช๋ฒ ์ด๋ฃจ์ด์ง๋ ์ง๋ฅผ ํ๊ธฐ ๊ณต๊ฐ ๋ณต์ก๋ ํน์ ํ ํฌ๊ธฐ์ ์ ๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋์ง๋ฅผ ์๋ฏธ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋น ์ค ํ๊ธฐ๋ฒ(Big O Notation) ๋ณต์ก๋๋ฅผ ํํํ ๋์๋ ๋น ์ค ํ๊ธฐ๋ฒ์ ..
[42Seoul] Netwhat - ๋คํธ์ํฌ ๋ฐ ์์คํ ๊ด๋ฆฌ
1. Introduction Netwaht์ ๋คํธ์ํฌ์ ๋ํด ์๊ฒ ๋๊ณ ๊ทธ๊ฒ์ด ๋ด๋ถ์์ ์๋ํ๋ ์ผ๋ค์ ๋ํด ๋ฐฐ์ธ ์ ์๊ฒ ํด์ค ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ ์ํ ์์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ ํ ๊ฒ๋ค์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ ์ ์๋๋ก ํด์ค ๊ฒ์ ๋๋ค. 2. General instructions Netwhat์ ๋ค์ค ์ ํ ํ๋ก์ ํธ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ฌ๋ฌ๋ถ์ ๋คํธ์ํฌ ์ง์์ ํ๊ฐํ ๊ฒ์ ๋๋ค. ์ธํฐ๋ท์์ ๋คํธ์ํฌ ๊ฐ์๋ค์ ์ฝ๋ ๊ฒ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. ๊ทธ ์ดํ์ ์ง์์ ํ ์คํธํ๊ธฐ์ํ ์จ๋ผ์ธ์ํ์ ๋ณผ ์ ์์ต๋๋ค. ์ผ๋จ ์ํ์ ํต๊ณผํ ์ค๋น๊ฐ ๋์๊ณ , ๊ณต๋ถ๋ฅผ ๋๋ง์ณค๋ค๋ฉด : netwhat.42.fr์ ์ ์ํ์ธ์. 3. Mandatory part โฆ What is an IP address IP : Inte..
[JAVA] ์์ผ(socket) ํ๋ก๊ทธ๋๋ฐ
์์ผ ํ๋ก๊ทธ๋๋ฐ ์์ผ(socket) ์ด๋ ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์ฌ์ฉ๋๋ ์์ชฝ ๋๋จ์ ์๋ฏธํ๋ค. ์๋ฐ์์๋ java.netํจํค์ง๋ฅผ ํตํด ์์บฃ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋๋ฐ, ์์ผ ํต์ ์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ข ๋ฅ์ ์์ผ์ ๊ตฌํํ์ฌ ์ ๊ณตํ๋ค. 1. TCP(Transmission Control Protocol) ์ธํฐ๋ท์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ์ง์ ํํ๋ก ๋ณด๋ด๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉํ๋ ํ๋กํ ์ฝ. ์ผ๋ฐ์ ์ผ๋ก TCP์ IP๋ฅผ ํจ๊ป ์ฌ์ฉํ๋๋ฐ, IP๊ฐ ๋ฐ์ดํฐ์ ๋ฐฐ๋ฌ์ ์ฒ๋ฆฌํ๋ค๋ฉด TCP๋ ํจํท์ ์ถ์ ๋ฐ ๊ด๋ฆฌํ๋ค. TCP๋ ์ฐ์์ฑ๋ณด๋ค ์ ๋ขฐ์ฑ์๋ ์ ์ก์ด ์ค์ํ ๋์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ๋ก ์๋ฅผ ๋ค๋ฉด ํ์ผ ์ ์ก๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. ํจํท(Packet)์ด๋? ์ธํฐ๋ท ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํ ๊ฒฝ๋ก๋ฐฐ์ (๋ผ์ฐํ )์ ํจ์จ์ ์ผ๋ก ..
[JAVA]์ ์ถ๋ ฅ IO & NIO
์ ์ถ๋ ฅ์ด๋? I/O๋ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ, ์ปดํจํฐ ๋ด๋ถ ๋๋ ์ธ๋ถ์ ์ฅ์น์ ํ๋ก๊ทธ๋จ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๋งํ๋ค. ์คํธ๋ฆผ(stream) ์คํธ๋ฆผ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฐํ๋๋ฐ ์ฌ์ฉ๋๋ ์ฐ๊ฒฐํต๋ก์ด๋ค. ์คํธ๋ฆผ์ ๋จ๋ฐฉํฅํต์ ๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์คํธ๋ฆผ์ผ๋ก ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค. ๊ทธ๋์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋์์ ์ํํ๋ ค๋ฉด ์ ๋ ฅ์ ์ํ ์ ๋ ฅ์คํธ๋ฆผ๊ณผ ์ถ๋ ฅ์ ์ํ ์ถ๋ ฅ์คํธ๋ฆผ ๋ชจ๋ 2๊ฐ์ ์คํธ๋ฆผ์ด ํ์ํ๋ค. ์คํธ๋ฆผ์ ๋จผ์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฐ๊ฒ ๋์ด ์์ผ๋ฉฐ ์ค๊ฐ์ ๊ฑด๋๋ ์์ด ์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ํ์ ๊ฐ์ FIFO(First In First Out) ๊ตฌ์กฐ๋ก ๋์ด ์๋ค๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ์ด๋ค. ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ ( InputStream, OutputStream ) - ์ ์ถ๋ ฅ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋จ..
[JAVA] ์๋ฐ ์ปดํ์ผ์ ์ด๋ป๊ฒ ๋์ํ ๊น?
Write Once, Run Anywhere! ์๋ฐ ์ด์ ์ C/C++๊ณผ ๊ฐ์ ์ธ์ด๋ ์ปดํ์ผ์ ๋ฆฌ๋ ์ค์์ ํ๋ค๋ฉด ๋ฆฌ๋ ์ค์์๋ง ์คํ์ด ๊ฐ๋ฅํ๋ค. ์ฆ ์ปดํ์ผ๋ฌ๊ฐ OS์ ์ข ์๋์ด ํด๋น OS์ ๋ง๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฐ๊ฐ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ด๋ค. ์๋ฐ๋ OS์ ๊ด๋ จ์์ด JRE๋ง ์ค์น๋์ด ์๋ค๋ฉด ์ด๋ค OS์์๋ ์๋ฐ๋ฅผ ์ปดํ์ผํ๊ณ ์คํ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์จ JVM์ ๊ฐ์ํ๊ฒฝ์์ ์ปดํ์ผ์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ชจ๋ OS์์ ํ๋์ JVM์ผ๋ก ์คํ ๋ฐ ์ปดํ์ผ ํ ์ ์๊ฒ ํ์๋ค. JAVA ์ปดํ์ผ๊ณผ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ Java ์ปดํ์ผ ๊ณผ์ .java ํ์ผ ์์ฑ ํ Build -> compile(javac) -> byteCode .class file(๋ฐ๊ธฐ๊ณ์ด) ์ด๋ ๊ฒ ์์ฑ๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ ํด๋์ค ๋ก๋์ ์ํด JVM๋ด๋ก ..
[JAVA] Garbage Collection (๊ฐ๋น์ง์ปฌ๋ ์ )์ด๋?
Garbage Collection(GC) GC๋ reachability๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํด ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ์ญํ ์ ํ์ฌ ์๋ฐ์์๋ ๋ช ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ํด์ ํ์ง ์๋๋ค. Minor, Major GC -Heap ์์ญ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด ์ต์ด๋ก Eden ์์ญ์ ํ ๋น๋๊ณ ์ด ์์ญ์ ์ด๋์ ๋ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ฉด ์ฐธ์กฐ์ ๋์ ๋ฐ๋ผ Servivor1, Servivor2 ์ค ๋น ๊ณต๊ฐ์ผ๋ก ์ด๋๋๋ค. New Generation๊ณผ Tenured Generation ์์์ GC๋ฅผ Minor GC ๋ผ๊ณ ํ๋ค. Old์์ญ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฉ์น๋ฅผ ๋๊ฒ ๋๋ฉด, Old ์์ญ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๊ฒ์ฌํ์ฌ ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ค์ ํ๊บผ๋ฒ์ ์ญ์ ํ๋ GC๊ฐ ์คํ๋๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด๊ณ ์ด ๋ G..
[JAVA] JDK, JRE, JVM์ด๋?
JVM(Java Virtual Machine) Java ์ฝ๋ ๋ฐ Application์ ๋์์ํฌ ์ ์๋๋ก ๋ฐํ์ ํ๊ฒฝ์ ์ ๊ณตํด์ฃผ๋ Java Engine์ด๋ค. JRE(Java SE Runtime Environment) Java ์คํํ๊ฒฝ, JVM์ด ์๋ฐ๋ฅผ ์คํ์ํฌ๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ธฐํ ํ์ ํ์ผ์ ๊ฐ์ง๊ณ ์๋ค. JDK(Java Development Kit) JRE ์ธ์ ๊ฐ๋ฐ์ ์ํด ํ์ํ ๋๊ตฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ๋ฐ์๋ฅผ ์ํ kit์ด๋ค. > JVM(Java Virtual Machine) JVM์ ๊ธฐ๋ฅ 1. ์๋ฐ ํ๋ก๊ทธ๋จ์ด ์ด๋ ๊ธฐ๊ธฐ, ์ด๋ ์ด์์ฒด์ฒด ์์์๋ ์คํ ๊ฐ๋ฅ 2. ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ & ์ต์ ํ 3. ์ธํฐํ๋ฆฌํฐ๋ก์จ ์ปดํ์ผ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ - ๊ฐ๋น์ง ์ปฌ๋ ์ : jvm์ด..