๐ŸŒป JAVA

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

java.lang.String

docs.oracle.com/javase/7/docs/api/java/lang/String.html String (Java Platform SE 7 ) Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum docs.oracle.com ์„œ๋ก  String์— ๋Œ€ํ•ด์„œ ์ž˜ ์•Œ๊ณ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ๋„ˆ๋ฌด ๋ชจ..

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

JAVA - STUDY 2์ฃผ์ฐจ ๊ณผ์ œ: ์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด

๋ชฉํ‘œ ์ž๋ฐ”์˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค. ํ•™์Šตํ•  ๊ฒƒ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž… ์ข…๋ฅ˜์™€ ๊ฐ’์˜ ๋ฒ”์œ„ ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ๊ฐ’ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…๊ณผ ๋ ˆํผ๋Ÿฐ์Šค ํƒ€์ž… ๋ฆฌํ„ฐ๋Ÿด ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„์™€ ๋ผ์ดํ”„ํƒ€์ž„ ํƒ€์ž… ๋ณ€ํ™˜, ์บ์ŠคํŒ… ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž… ํ”„๋กœ๋ชจ์…˜ 1์ฐจ ๋ฐ 2์ฐจ ๋ฐฐ์—ด ์„ ์–ธํ•˜๊ธฐ ํƒ€์ž… ์ถ”๋ก , var ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž… ์ข…๋ฅ˜์™€ ๊ฐ’์˜ ๋ฒ”์œ„ ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ๊ฐ’ ์ž๋ฐ”๋Š” ์ด 8๊ฐ€์ง€์˜ ๊ธฐ๋ณธํ˜• ํƒ€์ž…(Primitive Type)์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— null์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ null์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ํƒ€์ž… ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๊ธฐ๋ณธ ๊ฐ’ ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„ ๋ฒ”์œ„ ๋…ผ๋ฆฌํ˜• boolean 1 byte false true, false ์ •์ˆ˜ํ˜• byte 1 by..

๐ŸŒป JAVA/์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ

JAVA - STUDY 1์ฃผ์ฐจ ๊ณผ์ œ : JVM์€ ๋ฌด์—‡์ด๋ฉฐ ์ž๋ฐ” ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€

๋ชฉ์ฐจ : ํ•™์Šตํ•  ๊ฒƒ JVM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ์ปดํŒŒ์ผ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ JVM ๊ตฌ์„ฑ ์š”์†Œ JDK์™€ JRE์˜ ์ฐจ์ด JVM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ JVM์€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine)์˜ ์•ฝ์ž๋กœ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.classํŒŒ์ผ)์„ OS์— ํŠนํ™”๋œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜(์ผ๋ฐ˜์ ์œผ๋กœ, ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋‚˜ JIT ์ปดํŒŒ์ผ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ์œ„์—์„œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค)ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค. JVM์€ ์šด์˜์ฒด์ œ ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. ์œˆ๋„์šฐ์— ํŠนํ™”๋œ JVM์ด ์žˆ๊ณ , Linux์— ํŠนํ™”๋œ JVM์ด ์žˆ๊ณ , Mac OS์— ํŠนํ™”๋œ JVM์ด ์žˆ์„๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.classํŒŒ์ผ)๋Š” ์–ด๋–ค JVM์—์„œ๋‚˜ ๋‹ค ๋™์ž‘์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ‘œ์ค€ ์ž๋ฐ” API๊นŒ์ง€..

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (feat. Factorial, Fibonacci)

์žฌ๊ท€(Recursion) ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? ์–ด๋Š ํ•œ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ํ•™์ƒ์ด ์œ ๋ช…ํ•œ ๊ต์ˆ˜๋‹˜์„ ์ฐพ์•„๊ฐ€ ๋ฌผ์—ˆ๋‹ค. "์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?" "์ž˜ ๋“ค์–ด๋ณด๊ฒŒ. ์˜›๋‚ ์˜›๋‚  ํ•œ ์‚ฐ ๊ผญ๋Œ€๊ธฐ์— ์ด์„ธ์ƒ ๋ชจ๋“  ์ง€์‹์„ ํ†ต๋‹ฌํ•œ ์„ ์ธ์ด ์žˆ์—ˆ์–ด. ๋งˆ์„ ์‚ฌ๋žŒ๋“ค์€ ๋ชจ๋‘ ๊ทธ ์„ ์ธ์—๊ฒŒ ์ˆ˜๋งŽ์€ ์งˆ๋ฌธ์„ ํ–ˆ๊ณ , ๋ชจ๋‘ ์ง€ํ˜œ๋กญ๊ฒŒ ๋Œ€๋‹ตํ•ด ์ฃผ์—ˆ์ง€. ๊ทธ์˜ ๋‹ต์€ ๋Œ€๋ถ€๋ถ„ ์˜ณ์•˜๋‹ค๊ณ  ํ•˜๋„ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋Š ๋‚ , ๊ทธ ์„ ์ธ์—๊ฒŒ ํ•œ ์„ ๋น„๊ฐ€ ์ฐพ์•„์™€์„œ ๋ฌผ์—ˆ์–ด. "์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?" "์ž˜ ๋“ค์–ด๋ณด๊ฒŒ. ์˜›๋‚ ์˜›๋‚  ํ•œ ์‚ฐ ๊ผญ๋Œ€๊ธฐ์— ์ด์„ธ์ƒ ๋ชจ๋“  ์ง€์‹์„... ์ถœ์ฒ˜ : namu.wiki/w/%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98 ํŒฉํ† ๋ฆฌ์–ผ๋กœ ์•Œ์•„๋ณด๋Š” ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋จผ์ € ํŒฉํ† ๋ฆฌ์–ผ ์ด๋ž€? ์ˆซ์ž n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n ๋ถ€ํ„ฐ 1๊นŒ์ง€์˜ ๊ณฑ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋œปํ•œ๋‹ค. 0! = 1 1! =..

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - Merge Sort (๋ถ„ํ•  ์ •๋ณต, ๋ณ‘ํ•ฉ ์ •๋ ฌ)

์•ˆ๋…•ํ•˜์„ธ์š”, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •๋ฆฌํ•˜๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”. ๐Ÿ˜Š '๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก ๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. iseunghan.tistory.com ๋ถ„ํ•  ์ •๋ณต (Merge Sort) Merge Sort, ๋ถ„ํ•  ์ •๋ณต, ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํ•ฉ๋ณ‘ ์ •๋ ฌ ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ๊นŒ์ง€๋„ O(n log n)์„ ๋ณด์žฅํ•œ๋‹ค. ๋‚˜๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ• ๋•Œ, ๋ถ„ํ•  ์ •๋ณต์ด๋ผ๊ณ  ๋ฐฐ์›Œ์„œ ๋ถ„ํ•  ์ •๋ณต์ด๋ผ๊ณ  ์นญํ•˜๊ฒ ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋ถ„ํ•  ์ •๋ณต์ผ๊นŒ? Merge Sort๊ฐ€ O(n logn)์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ ๋Š” ์ •๋ ฌ ํ•  ๋ฐฐ์—ด์„ ๋ฐ˜์œผ๋กœ ๋ถ„ํ•  ํ•œ๋’ค ๊ฐ๊ฐ ์ •๋ ฌ ์‹œํ‚ค๊ณ  ํ•ฉ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. (์•„๋ž˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์ž) ..

๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ - Counting Sort (์นด์šดํŒ… ์ •๋ ฌ / ๊ณ„์ˆ˜ ์ •๋ ฌ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•ˆ๋…•ํ•˜์„ธ์š”, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •๋ฆฌํ•˜๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”. ๐Ÿ˜Š '๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก ๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. iseunghan.tistory.com ๊ณ„์ˆ˜ ์ •๋ ฌ (Counting Sort) ์นด์šดํŒ… ์ •๋ ฌ์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(๐‘›) ์œผ๋กœ ์†๋„๊ฐ€ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ€ต ์ •๋ ฌ(Quick Sort), ํ•ฉ๋ณ‘ ์ •๋ ฌ(Merge Sort) ์˜ ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๐šถ(nlogn) ์ธ๋ฐ ์นด์šดํŒ… ์ •๋ ฌ์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(๐‘›) ์œผ๋กœ ์†๋„๊ฐ€ ์•„์ฃผ ์šฐ์ˆ˜ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์นด์šดํŒ… ์ •๋ ฌ์„ ์ฝ”๋“œ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด์„œ ๋ณด์ž. ๋จผ์ €, ๋ฐฐ์—ด์€ ์„ธ๊ฐ€์ง€๋ฅผ ์„ ์–ธ ํ•ด์ค€๋‹ค. int[] array = new int[100]; //์ˆ˜์—ด์˜ ์›์†Œ : 100๊ฐœ int[] cou..