๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€46

[๊ฐœ๋…์ •๋ฆฌ] ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋“ค์˜ ํŠน์ง•์€ ๋Ÿฌํ”„ํ•œ ๋ฐฉ๋ฒ• (์ผ๋ฐ˜์ ์œผ๋กœ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ๋ฐฉ๋ฒ•)์œผ๋กœ๋Š” ํ•ด๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, DP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•ด์•ผํ•  ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค. ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ๊ฒฝ์šฐ, ํ•ด๋‹น ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ •๋ ฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” O(NlogN)์•ˆ์—์„œ ํ•ด๊ฒฐ๋œ๋‹ค. ๋ฐฑ์ค€ - 8982. ์‚ฌ๋ƒฅ๊พผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๊ฒŒ๋˜๋ฉด O(N*M)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ์ขŒํ‘œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ๋จผ์ €, ์‚ฌ๋Œ€์™€ ๋™๋ฌผ์„ ๋ชจ๋‘ x์ถ• ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ณ  ๋™๋ฌผ์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ๋ƒฅ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค. ํ™•์ธ ๊ณผ์ •์€ ๋™.. 2021. 2. 26.
[Kubernetes Best Practice] 5. ์ง€์†์  ํ†ตํ•ฉ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ์ด ๊ธ€์€ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‚ด์šฉ์€ ์ฑ…์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๋ฉ”์‹œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฑฐ๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€ ์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ฑ…์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ฝ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๊ฒฝ๋Ÿ‰ํ™” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก registry์—์„œ ๋‹ค์šด ๋ฐ›๋Š” ์‹œ๊ฐ„์ด ๊ฐ์†Œํ•˜์–ด ๋ฐฐํฌ ๊ณผ์ •์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ.. 2021. 2. 25.
[Kubernetes Best Practice] 4. ์„ค์ •, ์‹œํฌ๋ฆฟ, RBAC ์ด ๊ธ€์€ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‚ด์šฉ์€ ์ฑ…์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๋ฉ”์‹œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฑฐ๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€ ์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ฑ…์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ฝ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ConfigMap & Secret ์ปจํ…Œ์ด๋„ˆ์˜ ๋†’์€ ์ด์‹์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ํŠน์„ฑ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ™˜๊ฒฝ์˜ ๋ถ„๋ฆฌ ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ์„ค์ • ๋ฐ์ดํ„ฐ๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ํ†ตํ•ด ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด๋ฅผ ๋‹ฌ.. 2021. 2. 22.
[๋ฐฑ์ค€] 1987. ์•ŒํŒŒ๋ฒณ ํ’€์ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ์ง„ํ–‰ํ•˜์—ฟ๋‹ค. ์ด ๋•Œ ์ด์ „ ๋ฐฉ๋ฌธ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐ์—๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๊ณ  ์ด์— ๋Œ€ํ•œ ์ด์œ ๊ฐ€ ArrayList์˜ remove ๊ณผ์ •์—์„œ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ „ ๋ฐฉ๋ฌธ ์•ŒํŒŒ๋ฒณ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์„ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋„ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„ํŠธ๋งˆ์Šคํ‚น์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ์— distance๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ distance๋ฅผ ๋น„๊ตํ•˜๋„๋ก ๊ฐœ์„ ํ•˜์˜€๋‹ค. ๋น„ํŠธ๋งˆ์Šคํ‚น์œผ๋กœ๋Š” ํ˜„์žฌ ์•ŒํŒŒ๋ฒณ - 'A'๋ฅผ ํ•ด์คŒ์œผ๋กœ์จ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค.. 2021. 2. 19.
[๋ฐฑ์ค€] 3109. ๋นต์ง‘ ํ’€์ด DFS๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ๋•Œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์‹œ์ž‘ ์ ์€ ๊ฐ€์žฅ ์œ„์—์„œ๋ถ€ํ„ฐ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ๋˜๋Š” ๊ทธ๋ฆฌ๋””ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ฒซ๋ฒˆ์จฐ ์—ด์˜ 1๋ฒˆ์จฐ ํ–‰๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ , ๋งŒ์•ฝ C๋ฒˆ์งธ ํ–‰์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ์ž‘ ์œ„์น˜์—์„œ์˜ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค. ๋‹ค์Œ ์œ„์น˜๋„ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ์‹คํŒจํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฐฉ๋ฌธํ•œ ์œ„์น˜์— ๋Œ€ํ•œ ์ฒดํฌ๋ฅผ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜์—์„œ ํŒŒ์ดํ”„๋ฅผ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋’ค ์„ ํƒ์ง€์—์„œ ํ•ด๋‹น ๋ฐฉํ–ฅ์€ ๋™์ผํ•˜๊ฒŒ ์‹ค.. 2021. 2. 19.
[๋ฐฑ์ค€] 15686. ์น˜ํ‚จ ๋ฐฐ๋‹ฌ ํ’€์ด ์–ผํ• ๋ณด๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„๋ณด์ด์ง€๋งŒ ๊ฒฐ๊ตญ ๋”ฐ์ ธ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์น˜ํ‚จ์ง‘์˜ ๊ฐœ์ˆ˜ ์ค‘์— M๊ฐœ์˜ ์กฐํ•ฉ์„ ๋ฝ‘๋Š” ๊ฒฝ์šฐ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ง‘๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ณ  ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค. Next Permutation ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ์กฐํ•ฉ์„ ์ƒ์„ฑํ–ˆ๊ณ  ์ด์ „ ์ตœ์†Œ๊ฐ’์„ ๋„˜์–ด์„œ๋Š” ๊ฒฝ์šฐ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์„ ์ค‘์ง€ํ•˜๊ณ  ๋ฆฌํ„ด๋˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; public class Solution15686 { static class Pair { int x = 0; int y =.. 2021. 2. 19.