java

ํ•ด์‹œ๋ผ๋Š” ๋‹จ์–ด๋Š” ์•”ํ˜ธํ™” ๊ด€๋ จ ์ •๋ณด๋ฅผ ์•Œ์•„๋ณผ ๋•Œ ์ฃผ๋กœ ๋“ค์—ˆ๋˜ ๋‹จ์–ด ๊ฐ™๋‹ค.์˜ค๋Š˜์€ ํ•ด์‹œ์— ๊ด€๋ จํ•œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.Java์—์„œ๋Š” HashTable ๊ณผ HashMap ๋‘˜๋‹ค ์žˆ๋Š”๋ฐ, ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๋‘˜์„ ๊ตฌ๋ถ„ ์ง“์ง€๋Š” ์•Š๊ณ , HashMap ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„ค๋ช…์ž„์„ ์•Œ๋ ค๋“œ๋ฆฌ๋Š” ๋ฐ”์ด๋‹ค. ๐Ÿ“Œ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€?ํ•ด์‹œ(Hash) ๋‹จ์–ด ์ž์ฒด๋Š” ์–ด๋–ค ๊ฐ’์„ ์ผ์ • ๊ธธ์ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๊ณ , ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๊ทธ ํ•ด์‹œ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ„๋‹จํ•˜๊ฒŒ key-value ๊ตฌ์กฐ๋กœ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค๋Œ€์ฒด ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ๋ญ๊ธธ๋ž˜ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ?์ž ์šฐ๋ฆฌ๊ฐ€ ์นœ๊ตฌ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์น˜์ž.๊ฒ€์ƒ‰์ฐฝ์— ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์น˜๋ฉด ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค..
ยท๐Ÿ”  Language/JAVA
๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ๐Ÿ“Œ ๊ฐ€๋ณ€ vs ๋ถˆ๋ณ€String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ String์€ ์ž๋ฐ”์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.์ฆ‰, ํ•œ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด(Immutable)๋ผ๋Š” ๊ฒƒ์ด๋‹ค.public final class String implements java.io.Serializable, Comparable, CharSequence, Constable, ConstantDesc { private final byte[] value;}์‹ค์ œ ์ž๋ฐ”์—์„œ String ๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๋ด๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฌธ์ž์—ด์€ value๋ผ๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ €์žฅ๋œ๋‹ค.valu..
ยท๐Ÿ”  Language/JAVA
๐Ÿ“Œ Arrays.sort & Collections.sort ๋‘˜๋‹ค ์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.1. Arrays.sort์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.์ฆ‰, ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…๊ณผ ๊ฐ์ฒด ํƒ€์ž…์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. 1๏ธโƒฃ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์˜ ์ •๋ ฌ (int[], double[] ๋“ฑ)ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ Dual-Pivot Quicksort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.๋‘ ๊ฐœ์˜ ํ”ผ๋ฒ—์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ •๋ ฌํ•œ๋‹ค.์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด๊นŒ์ง€๋Š” ์ด ๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ์šฐ๋ ค๊ฐ€ ์žˆ์–ด์„œ ๋‚˜์ค‘์— ์ •๋ฆฌ ๊ธ€์„ ์˜ฌ๋ฆฌ๊ธฐ๋กœ ํ•œ๋‹ค.์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ‰๊ท ์ ์œผ๋กœ O(n log n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ตœ์•…์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๋งค์šฐ ๋‚ฎ๋‹ค. ..
์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด ์ด์ œ ์‹ค์งˆ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ง  ๊ฑด์ง€ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.์šฐ์„ , ๊ฐœ๋ฐœํ™˜๊ฒฝ์€ JAVA 17, gradle, Spring 3.2.1 ์ด๋Ÿฌํ•˜๋‹ค. 1. ํ•„์š”ํ•œ API ๋ชฉ๋ก ์ •๋ฆฌA. ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ API์ฒซ ๋ฉ”์ธ ํ™”๋ฉด์— ์ง„์ž…ํ•˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์กฐํšŒํ•˜๊ฒŒ ๋œ๋‹ค.B. ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ API๋งŒ์•ฝ "์˜๋ฅ˜" ์นดํ…Œ๊ณ ๋ฆฌ๋ผ๋ฉด ๊ทธ ํ•˜์œ„์— ์กด์žฌํ•˜๋Š” ํ‹ฐ์…”์ธ , ๋งจํˆฌ๋งจ/ํ›„๋“œํ‹ฐ ๋“ฑ๋“ฑ์˜ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก์ด ํ•„์š”ํ•˜๋‹ค. 2. ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ API ๊ตฌํ˜„์นดํ…Œ๊ณ ๋ฆฌ ๋ถ€๋ถ„ ์‹ค์ œ ๊ตฌํ˜„ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. A. REQ/RES ํ˜•ํƒœ ์ •์˜GET ์š”์ฒญ์œผ๋กœ /category/total ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด,HTTP/1.1 200 OKContent-Type: application/jsonC..
๋ฌธ์ œ ์„ค๋ช…์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ฐ‘๋ณ€์˜ ๊ธธ์ด์™€ ๋†’์ด๊ฐ€ n์ธ ์‚ผ๊ฐํ˜•์—์„œ ๋งจ ์œ„ ๊ผญ์ง“์ ๋ถ€ํ„ฐ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋‹ฌํŒฝ์ด ์ฑ„์šฐ๊ธฐ๋ฅผ ์ง„ํ–‰ํ•œ ํ›„, ์ฒซ ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ๋ชจ๋‘ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์นœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.์ œํ•œ์‚ฌํ•ญn์€ 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.์ž…์ถœ๋ ฅ ์˜ˆnresult4[1,2,9,3,10,8,4,5,6,7]5[1,2,12,3,13,11,4,14,15,10,5,6,7,8,9]6[1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] ๋ฌธ์ œ ํ’€์ด๋ฌธ์ œ์˜ ๊ทธ๋ฆผ์„ ํ–‰๊ณผ ์—ด๋กœ ๋ฐ”๊พธ์–ด ํ‘œํ˜„ํ•ด๋ณด๊ฒ ๋‹ค.๋นจ๊ฐ„ ๊ฒƒ์ด ์ขŒํ‘œ(x,y) ๊ฐ’์ด๋‹ค.ํ‘œ๋ฅผ ์•Œ๋งž๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ํ•ด๋‹น ์นธ์— ์ฐจ๋ก€๋Œ€๋กœ 1++ ํ•ด์„œ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ..
ยท๐Ÿ”  Language/JAVA
์ตœ๊ทผ ํฌํด์šฉ์œผ๋กœ ์˜คํ”ˆ๋งˆ์ผ“ ํ”Œ๋žซํผ์„ ์ฃผ์ œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ํ–ˆ๋Š”๋ฐ, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ๋น ์ ธ์žˆ์–ด์„œ ์ด๋ฒˆ์— ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๋ ค๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ์„œ์น˜๋ฅผ ํ•ด๋ณธ ๊ฒฐ๊ณผ ELK์Šคํƒ์„ ๋ฐ”๋กœ ์ ์šฉํ• ๊นŒ?ํ•˜๋‹ค๊ฐ€ ์š”์ฆ˜ ์ž์†Œ์„œ๋‹ˆ ์ฝ”ํ…Œ๋‹ˆ ์Šคํ„ฐ๋””๋‹ˆ ํ• ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ๊ธฐ๋„ ํ•˜๊ณ , ์šฐ์„ ์ ์œผ๋กœ ์ƒํ’ˆ ๊ฒ€์ƒ‰ ๋”ฑ ํ•œ ๊ธฐ๋Šฅ์—๋งŒ ์“ธ๊ฑด๋ฐ ๋„ˆ๋ฌด ์˜ค๋ฒ„์ŠคํŽ™์ด์ง€ ์•Š๋‚˜ ์‹ถ์–ด์„œ apache lucence ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์จ๋ณผ ์˜ˆ์ •์ด๋‹ค.
ํ‚จ์ง€ (Kinzie)
'java' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก