All
100 posts
๐Ÿ“š [Data Engineering] ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  - CH2 2-1 ํฌ๋กœ์Šค ์ง‘๊ณ„, 2-2 ์—ด ์ง€ํ–ฅ ์Šคํ† ๋ฆฌ์ง€์— ์˜ํ•œ ๊ณ ์†ํ™”

๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ ์‚ด์•„๋‚จ๊ธฐ - ๋น…๋ฐ์ดํ„ฐ์— ๊ด€๋ฆฌ์™€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ๊ธฐ์ˆ  ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ฐจ๊ทผ์ฐจ๊ทผ, ์ง„๋“ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  ๋„์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 2-1. ํฌ๋กœ์Šค ์ง‘๊ณ„์˜ ๊ธฐ๋ณธ 1. ํฌ๋กœ์Šค ์ง‘๊ณ„์˜ ๊ฐœ๋… 1. ํฌ๋กœ์Šค ํ…Œ์ด๋ธ”(Cross Table) ํ–‰๊ณผ ์—ด์ด ๊ต์ฐจํ•˜๋Š” ๋ถ€๋ถ„(cross)์— ์ˆซ์ž ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ํ…Œ์ด๋ธ” ์ฃผ๋กœ ์—‘์…€ ๋“ฑ์˜ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ ํ…Œ์ด๋ธ”์„ ํ‘œํ˜„ํ•˜๋Š” ํ˜•ํƒœ ์‚ฌ๋žŒ์ด ํ•ด์„ํ•˜๊ธฐ๋Š” ํŽธํ•˜๋‚˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์›€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ํ–‰์ด ์ถ”๊ฐ€๋จ. ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ” ์ •์˜ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€. 2. โ€ฆ

March 19, 2023
bigdata
data-engineering
๐Ÿ“š [Data Engineering] ์นด์นด์˜ค์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ - KAGE(KAkao storaGE)

์นด์นด์˜ค์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ : KAGE(KAkao storaGE) ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ 3๊ฐœ์˜ ํŒŒ์ผ(์›๋ณธ + 2๊ฐœ์˜ ๋ณต์ œ๋ณธ)๋กœ ๋งŒ๋“ค์–ด ๋ถ„์‚ฐ ์ €์žฅํ•จ - ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์žˆ์ง€๋งŒ, ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” 3๊ฐœ์˜ ์ฒญํฌ(์ฒญํฌ์…‹)์— ์ €์žฅ ํŒŒ์ผ ์ฝ๊ธฐ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ, ๋น ๋ฅธ ์žฅ์•  ํŒŒ์•… ๋ฐ ์ฒ˜๋ฆฌ KAGE์˜ ๊ตฌ์„ฑ - Datanode์™€ Namenode Datanode(๋ฐ์ดํ„ฐ ๋…ธ๋“œ) ์‹ค์ œ๋กœ ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ณต๊ฐ„. ํŒŒ์ผ์„ ์ฝ๊ณ  ์ „์†กํ•˜๋Š” ์—ญํ• . ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์˜ ํŒŒ์ผ ์ €์žฅ์†Œ๋Š” ์ฒญํฌ(Chunk)๋ผ๋Š” ์ผ์ •ํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ ๊ณต๊ฐ„์˜ ๋ชจ์ž„์œผ๋กœ ๊ตฌ์„ฑ๋จ ์ฒญํฌ๊ฐ€ 3๊ฐœ(๋งˆ์Šคํ„ฐ ๋…ธ๋“œ 1๊ฐœ, ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ 2๊ฐœ) ๋ชจ์ธ ์ฒญํฌ์…‹ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•จ Nโ€ฆ

March 12, 2023
data-engineering
infra
๐Ÿ“š [Data Engineering] ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ (DAS, SAN, NAS)

์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ๊ธฐ์ดˆ DAS(Directed-attached Storage) DAS(์ง์ ‘ ์—ฐ๊ฒฐ ์Šคํ† ๋ฆฌ์ง€) ์„œ๋ฒ„์™€ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋‘˜์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ ์ดˆ๊ธฐ์—๋Š” ์ฃผ ๊ธฐ์–ต์žฅ์น˜(RAM)์™€ ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜(ํ•˜๋“œ ๋””์Šคํฌ)๊ฐ€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๊ฐ™์ด ์“ฐ์ž„ ๊ณ„์‚ฐ์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ณ  ๋ฐ์ดํ„ฐ ๋ณด๊ด€์˜ ์šฉ๋Ÿ‰๊ณผ ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์ธ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๊ฐ€ ํƒ„์ƒํ•˜์˜€๊ณ , ์„œ๋ฒ„์— ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด ์‚ฌ์šฉํ•จ ์žฅ๋‹จ์  DAS ๊ตฌ์กฐ์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋””์Šคํฌ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ต์ฒดํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์Œ SAN(Storage Area Network) SAN(์Šคํ† ๋ฆฌ์ง€ ์ „์šฉ ๋„คํŠธ์›Œํฌ) ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€ ์ค€๋น„ํ•œ ๋’ค ์Šคํ† ๋ฆฌ์ง€๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” โ€ฆ

March 11, 2023
data-engineering
infra
๐Ÿ“š [Data Engineering] ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  - CH1 3, 4 ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„, BI ๋„๊ตฌ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ ์‚ด์•„๋‚จ๊ธฐ - ๋น…๋ฐ์ดํ„ฐ์— ๊ด€๋ฆฌ์™€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ๊ธฐ์ˆ  ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ฐจ๊ทผ์ฐจ๊ทผ, ์ง„๋“ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  ๋„์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 1-3. ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์— ์˜ํ•œ ํŠน๋ณ„ ๋ถ„์„๊ณผ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์›์ฒœ ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ ์„œ๋ฒ„, API ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ฒŒ๋จ. ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ์ „์ฒ˜๋ฆฌ, ETL ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•จ. ๋Œ€ํ‘œ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ๋Š” R, Python ๋“ฑ์ด ์žˆ์Œ. Python์˜ ์šฐ์ˆ˜ํ•œ ํŠน์ง• ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์› : API ํ˜ธ์ถœ, ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์› : โ€ฆ

March 10, 2023
bigdata
data-engineering
๐Ÿ“š [Data Engineering] ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  - CH1 1_๋น…๋ฐ์ดํ„ฐ์˜ ์ •์ฐฉ, 2_๋น…๋ฐ์ดํ„ฐ ์‹œ๋Œ€์˜ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ๋ฐ˜

๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ ์‚ด์•„๋‚จ๊ธฐ - ๋น…๋ฐ์ดํ„ฐ์— ๊ด€๋ฆฌ์™€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ๊ธฐ์ˆ  ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ฐจ๊ทผ์ฐจ๊ทผ, ์ง„๋“ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  ๋„์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฑ…์—์„œ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ ์ž๋™ํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ(๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์Šคํ…œํ™”) ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” SW, DB, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ์‹œ๊ฐํ™” ๋„๊ตฌ ํŠน์ง•, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ธฐ์ˆ (์›Œํฌํ”Œ๋กœ์šฐ ๊ด€๋ฆฌ, ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ๋“ฑ) *๋น…๋ฐ์ดํ„ฐ ์ทจ๊ธ‰์ด ์–ด๋ ค์šด ์ด์œ  ๋ฐ์ดํ„ฐ์˜ ๋ถ„์„ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅธ๋‹ค (๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€์˜ ์—ญํ• ) ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ˆ˜๊ณ ์™€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค (๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด์˜ ์—ญํ• ) 1-1. ๋ฐฐ๊ฒฝ๋น…๋ฐ์ดํ„ฐ์˜ ์ •์ฐฉ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—โ€ฆ

February 19, 2023
bigdata
data-engineering
โ˜๏ธ [GCP] GCP Managed Services

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Managed Services GCP ์ž์›๊ณผ ํ•จ๊ป˜ ๊ด€๋ฆฌ ์—ญํ• ๊นŒ์ง€ ์„œ๋น„์Šค์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์ธํ”„๋ผ, ํ”Œ๋žซํผ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ปจํ…Œ์ด๋„ˆ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ˆ˜์ค€์— ๋”ฐ๋ผ ์„œ๋น„์Šค, ๋น„์šฉ์ด ๋‹ค๋ฆ„ ์„œ๋น„์Šค ์ œ๊ณต ๋‹จ๊ณ„ ํด๋ผ์šฐ๋“œ ์ž์› SaaS Application . Application Runtime PaaS OS . Virtโ€ฆ

December 05, 2022
gcp
cloud
โ˜๏ธ [GCP] Cloud Load Balancing

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Cloud Load Balancing ์‚ฌ์šฉ์ž์˜ ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ๋ฆฌ์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„๋ฐฐํ•˜๋Š” ์—ญํ•  ํŠน์ง• Health Check : failure๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์‚ด์•„์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋กœ ๋ผ์šฐํŒ… Auto Scaling : ์ž๋™์œผ๋กœ scale up & down Global Load Balancing : ๋‹จ์ผ ์• ๋‹ˆ์บ์Šคโ€ฆ

December 04, 2022
gcp
cloud
โ˜๏ธ [GCP] Gcloud

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Gcloud GCP ์ž์›๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ Command Line Interface(CLI) GCP ์ž์›์˜ 75%๋Š” ๋กœ ์ œ์–ด ๊ฐ€๋Šฅ googlc cloud SDK ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์›น ์ฝ˜์†”์˜ cloud shell์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ Configuration : Gcloud ์ดˆ๊ธฐํ™” : config ๋ฆฌ์ŠคํŠธ ์กฐโ€ฆ

December 02, 2022
gcp
cloud
โ˜๏ธ [GCP] VM Practice & GCE Scenario

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. VM Practice Zone and Region ์„ ํƒํ•˜๊ธฐ costs, regulations, availability needs, latency, HW ๋ฐ”ํƒ•์œผ๋กœ ๊ณ ๋ ค Machine Type ์„ ํƒํ•˜๊ธฐ ์ถ”์ •์ด ์–ด๋ ค์šธ ๊ฒฝ์šฐ ์ง์ ‘ ์—ฌ๋Ÿฌ Machine Type ์ธ์Šคํ„ด์Šค ์‹คํ–‰ํ•ด๋ณธ ๋’ค ์„ฑ๋Šฅ ๋“ฑ ๋น„๊ตํ•˜์—ฌ ํŒ๋‹จ GPU ์‚ฌ์šฉ โ€ฆ

December 01, 2022
gcp
cloud
โ˜๏ธ [GCP] Instance Groups

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Instance Groups ์—ฌ๋Ÿฌ๊ฐœ์˜ VM์„ ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค ๋ฌถ์Œ ์ข…๋ฃŒ Managed(MIG) Instance Template๋ฅผ ์ด์šฉํ•ด ๋™์ผํ•œ VM์„ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌ Auto scaling, Auto healing ์ง€์› Unmanaged ์„œ๋กœ ๋‹ค๋ฅธ configurations๋กœ ๋‹ค๋ฅธโ€ฆ

November 30, 2022
gcp
cloud
โ˜๏ธ [GCP] Optimizing Costs and Performances

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Costs Sustained Use Discounts ํŠน์ • ๋‹ฌ ๋™์•ˆ ์ƒ๋‹น๋Ÿ‰์˜ ์ž์› ์‚ฌ์šฉ ์‹œ ์ž๋™์œผ๋กœ ์ ์šฉ๋˜๋Š” ํ• ์ธ Google Compute Engine, Google Kubernetes Engine ์ธ์Šคํ„ด์Šค ์ ์šฉ ์ œ์•ฝ ํŠน์ • ๋จธ์‹ ์€ ํ• ์ธ ์ œ์™ธ(E2, A2) App Engine flexible, Dataflowโ€ฆ

November 30, 2022
gcp
cloud
โ˜๏ธ [GCP] Google Compute Engine

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Google Compute Engine(GCE) GCP์—์„œ VM์„ ํ”„๋กœ๋น„์ €๋‹ & ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ•  ํŠน์ง• VM ์ธ์Šคํ„ด์Šค์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ Multiple VM ์‚ฌ์šฉ ์‹œ Load Balancing & Auto Scaling ์Šคํ† ๋ฆฌ์ง€(ex.๋„คํŠธ์›Œํฌ ์Šคํ† ๋ฆฌ์ง€) ์ œ๊ณต ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ, ์„ค์ • ๊ด€๋ฆฌ(IP ์ฃผ์†Œ ๊ด€๋ฆฌ) Machโ€ฆ

November 29, 2022
gcp
cloud
โ˜๏ธ [GCP] Region and Zones

GCP - Associate Cloud Engineer ์ค€๋น„๊ธฐ GCP Certification ์ทจ๋“์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. GCP ์ „๋ฐ˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œUdemy-GCP Associate Cloud Engineer - Google Cloud Certificationโ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Data Center ์›๊ฒฉ์ง€ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ฐฐํฌ์˜ ๋ฌธ์ œ์  High Latency : ํƒ€ ์ง€์—ญ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์› ์ ‘๊ทผ ๋ฐ ์š”์ฒญ ์‹œ ์˜ค๋ž˜๊ฑธ๋ฆผ Low Availability : ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๊ณ ์žฅ๋‚˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์ฃฝ์Œ Multiple ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ฐฐํฌ ๋™์ผ ์ง€์—ญ์— ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์ด์ค‘ํ™”ํ•˜๋Š” ๊ฒƒ 1)๋ฒˆ ๋ฌธ์ œ ๋ฏธํ•ด๊ฒฐ 2)๋ฒˆโ€ฆ

November 28, 2022
gcp
cloud
๐ŸŒฟ [SpringBoot MSA] RESTful API

RESTful API ๋‚ด ๊ณต๋ถ€๋Š” ๋‚ด๊ฐ€ ํ•œ๋‹ค, ๋‚ด๊ณต๋‚ดํ•œโ€ฆ ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œ์ธํ”„๋Ÿฐ-Spring Cloud๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(MSA)โ€ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. RESTful Web Service ๋‹จ๊ณ„ LEVEL 0 ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์›น ์„œ๋น„์Šค๋กœ ๊ฒฝ์œ ํ•ด ์ „๋‹ฌ๋ฐ›๋Š” ์ตœ์†Œํ•œ์˜ ๋ชฉ์ ๋งŒ ๋‹ฌ์„ฑ. URL์— action์„ ๋ฐ”๋กœ ๋…ธ์ถœ์‹œํ‚จ ํ˜•ํƒœ ex) http://server/getPosts http://server/deletePosts http://server/doThis LEVEL 1 ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ URL์— ์ ์ ˆํ•˜๊ฒŒ ํ‘œ๊ธฐํ•จ. URL์˜ ํ˜•์‹์€ ์˜ฌ๋ฐ”๋ฅด๋‚˜ HTTP Methods๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ ex) http://seโ€ฆ

August 31, 2022
spring
msa
๐Ÿ“Ÿ [Infra] 3๊ณ„์ธตํ˜• ์‹œ์Šคํ…œ

3๊ณ„์ธตํ˜• ์‹œ์Šคํ…œ(3 Tier System) ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„๊ณผ ์‹œ์Šคํ…œ์˜ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ  ์‹ถ์–ด ์ธํ”„๋ผ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œ๊ทธ๋ฆผ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š” IT ์ธํ”„๋ผ ๊ตฌ์กฐโ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 3๊ณ„์ธตํ˜• ์‹œ์Šคํ…œ 3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜๋Š” , , ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ์„œ๋ฒ„๋Š” ์Šค์œ„์น˜๋ฅผ ๊ฒฝ์œ ํ•˜์—ฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. ๋ชจ๋“  ์„œ๋ฒ„๋Š” ๋…๋ฆฝ๋œ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์™€ ๋™์ผํ•œ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ฐ ์„œ๋ฒ„ ๋‚ด๋ถ€์— CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ, NIC/HBA์™€ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ๋ถ€ํ’ˆ์ด ์กด์žฌํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ OS ์ปค๋„์ด ์กด์žฌํ•˜๊ณ , ๊ทธ ์œ„์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๊ฐ ์„œ๋ฒ„์˜ CPU์™€ ๋””์Šคํฌ๋ฅผ ์ด์šฉํ•˜โ€ฆ

July 24, 2022
infra
๐Ÿ“Ÿ [Infra] OS ์ปค๋„

OS ์ปค๋„ (OS Kernel) ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„๊ณผ ์‹œ์Šคํ…œ์˜ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ  ์‹ถ์–ด ์ธํ”„๋ผ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ์€ โ€œ๊ทธ๋ฆผ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š” IT ์ธํ”„๋ผ ๊ตฌ์กฐโ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. OS ์ปค๋„์˜ ์—ญํ•  ํ•œ๋งˆ๋””๋กœ ์ •๋ฆฌํ•˜๋ฉด โ€˜๋’ค์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋Š”์ง€ ์€ํํ•˜๋ฉด์„œ ํŽธ๋ฆฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒโ€™ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ. ๋ชจ๋“  ์ž‘์—…์„ ์ ‘์ˆ˜๋ฐ›๊ณ (์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ), ์ž‘์—…์„ ์œ„ํ•œ ์ˆœ์„œ๋‚˜ ์ €์žฅ ๊ณต๊ฐ„ ๋“ฑ์„ ์Šค์Šค๋กœ ์ œ์–ดํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค. 1) ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ -> ์ปค๋„ ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด OS์— ์ž‘์—…์„ ๋ช…๋ นํ•˜๋Š” ๊ฒƒ์„ โ€œ์‹œ์Šคํ…œ ์ฝœโ€์ด๋ผ ํ•œ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋„โ€ฆ

July 24, 2022
infra
โœจ [Seoul Emergency Proj.] ํ•˜๋‘ก๊ณผ ๋ชฝ๊ณ DB ์—ฐ๊ฒฐํ•˜๊ณ  ๋งต๋ฆฌ๋“€์Šค ๊ฒฐ๊ณผ ๋ชฝ๊ณ DB์— ์ ์žฌํ•˜๊ธฐ

ํ•˜๋‘ก๊ณผ ๋ชฝ๊ณ DB ์—ฐ๊ฒฐํ•˜๊ณ  ๋งต๋ฆฌ๋“€์Šค ๊ฒฐ๊ณผ ๋ชฝ๊ณ DB์— ์ ์žฌํ•˜๊ธฐ ~์ผ๊ฐ„~ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) Seoul Emergency ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์„ค์ •(์ด 99%) ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋”ฐ๋ผ 2๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. [Hadoop] ํ•˜๋‘ก๊ณผ MongoDB ์—ฐ๋™ํ•˜๋Š” ์ฝ”๋“œ hadoop ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ mongoDB ๊ณต์‹ ๋ฌธ์„œ MapReduce Usage ยท mongodb/mongo-hadoop Wiki ๋ฌธ์ œ์˜ ์‹œ์ž‘..(๋ฒŒ์จ?) ์ผ๋ฐ˜์ ์œผ๋กœ maven ์ด๋‚˜ gradle๋กœ ๋นŒ๋“œํ•˜๋ฉด ์œ„์—์„œ ์š”๊ตฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,,,(pom.xml์— ํƒœ๊ทธ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ builโ€ฆ

March 16, 2022
project
seoul_emergency
hadoop
mongodb
โœจ [Seoul Emergency Proj.] ์žฌ๋‚œ ๋‰ด์Šค ํ˜•ํƒœ์†Œ ๋ถ„์„ํ•ด์„œ Map Reduce WordCount ํ•ด๋ณด๊ธฐ

์žฌ๋‚œ ๋‰ด์Šค ํ˜•ํƒœ์†Œ ๋ถ„์„ํ•ด์„œ Map Reduce WordCount ํ•ด๋ณด๊ธฐ ~์ผ๊ฐ„~ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) Seoul Emergency ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์žฌ๋‚œ๋‰ด์Šค ํ˜•ํƒœ์†Œ ๋ถ„์„ํ•˜๊ธฐ ํŒŒ์ด์ฌ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๊ทธ๋ƒฅ ๊ธฐ์‚ฌ ์›๋ฌธ ๊ธ์–ด์™€์„œ txt ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ณ  ๋งต๋ฆฌ๋“€์Šค ๋Œ๋ฆฌ๋‹ˆ ๋„์–ด์“ฐ๊ธฐ๋กœ๋งŒ ๊ตฌ๋ถ„์ด ๋˜์–ด์„œโ€ฆ ์–ด๊ตฌ๊ณผ ๋ช…์‚ฌ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ด์ฌ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. Open Korean Text ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ๋ฌธ์žฅ์„ ์ •๊ทœํ™”ํ•˜๊ฑฐ๋‚˜, ์–ด๊ตฌ, ํ˜•ํƒœ์†Œ, ๋ช…์‚ฌ ๋“ฑ์„ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ, Okt(Open Korean Text) (๊ตฌ)ํŠธ์œ„ํ„ฐ ํ˜•ํƒœ์†Œ๋ถ„์„โ€ฆ

March 14, 2022
project
seoul_emergency
hadoop
โœจ [Seoul Emergency Proj.] ์„œ๋ฒ„์— MongoDB ์„ค์น˜ํ•˜๊ณ  ๋กœ์ปฌ MongoDB Compass๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

์„œ๋ฒ„์— MongoDB ์„ค์น˜ํ•˜๊ณ  ๋กœ์ปฌ MongoDB Compass๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ~์ผ๊ฐ„~ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) Seoul Emergency ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. MongoDB ์‚ฌ์šฉํ•˜๊ธฐ ๋ชฉํ‘œ : ๊ฐ€์ƒํ™˜๊ฒฝ์ธ VMWare ์šฐ๋ถ„ํˆฌ์— MongoDB ์„ค์น˜ํ•˜๊ณ  ๋กœ์ปฌํ™˜๊ฒฝ์ธ Windows์— MongoDB GUI์ธ MongoDB Compass ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ๋‹ค! VMWare์— MongoDB ์„ค์น˜ํ•˜๊ธฐ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ MongoDB๋ฅผ ์„ค์น˜ํ•˜๊ณ  DB, User๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. [MongoDB/Linux] ์šฐ๋ถ„ํˆฌ์— ๋ชฝ๊ณ DB ์„ค์น˜ ๋ฐ ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ / MongoDB Compass๋กœ ์™ธ๋ถ€ ์ ‘์† ์ด๋•Œ โ€ฆ

March 13, 2022
project
seoul_emergency
mongodb
โœจ [Seoul Emergency Proj.] ์„œ์šธ์‹œ ์ง€์ง„ ํ•ด์ผ ๋ฐ์ดํ„ฐ๋กœ Hadoop MapReduce ํ•ด๋ณด๊ธฐ

์„œ์šธ์‹œ ์ง€์ง„ ํ•ด์ผ ๋ฐ์ดํ„ฐ๋กœ Hadoop MapReduce ํ•ด๋ณด๊ธฐ ~์ผ๊ฐ„~ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) Seoul Emergency ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ค€๋น„ํ•˜๊ธฐ ์šฐ๋ถ„ํˆฌ์—์„œ ํ•œ๊ธ€์‚ฌ์šฉํ•˜๊ธฐ ์š”๊ฑฐ ๋”ฐ๋ผํ•˜๊ธฐ Ubuntu 20.04 ํ‚ค๋ณด๋“œ ํ•œ๊ธ€ ์ž…๋ ฅ ์„ค์ • ํ•˜๊ธฐ ์ค‘์š”!!! ์ค‘๊ฐ„์— install ํ•˜๋‹ค๊ฐ€ ์ธํ„ฐ๋„ท ์ปค๋„ฅ์…˜ ์—๋Ÿฌ ๋œฐ ๊ฒฝ์šฐ cmd ์ฐฝ์—์„œ apt ๋ช…๋ น์–ด๋กœ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๊ธฐ ์ƒ๋‹จ๋ฐ”์—์„œ ํ•œ๊ธ€ ๊ผญ ์„ค์ •ํ•ด์ค˜์•ผํ•จ ์„œ์šธ์‹œ ์—ด๋ฆฐ๋ฐ์ดํ„ฐ ๊ด‘์žฅ์—์„œ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ ํŒŒ์ด์–ดํญ์Šค์—์„œ ์„œ์šธ์‹œ ์—ด๋ฆฐ๋ฐ์ดํ„ฐ ๊ด‘์žฅ ์ ‘์†ํ•œ ๋’ค csv ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํŒŒ์ผ๋ช… ํ•œ๊ธ€+๋„์–ด์“ฐ๊ธฐ ์žˆ์œผ๋ฉด ๋‚˜์ค‘์— ๊ท€์ฐฎ์•„์ง€๋ฏ€๋กœ ์ ์ ˆํ•œ ์˜์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ โ€ฆ

March 10, 2022
project
seoul_emergency
hadoop
๐ŸŒฟ [Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž ๊ถŒํ•œ ์ถ”๊ฐ€ ์„ค์ •ํ•˜๊ธฐ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž ๊ถŒํ•œ ์ถ”๊ฐ€ ์„ค์ •ํ•˜๊ธฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถ€๊ฐ€์ ์ธ ๊ถŒํ•œ ์„ค์ •์„ ํ•ด๋ณด์ž. Secured ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธ€๋กœ๋ฒŒํ•œ ๊ถŒํ•œ ์ฒ˜๋ฆฌ๋Š” SecureConfig ํด๋ž˜์Šค์˜ configure() ๋ฉ”์„œ๋“œ์—์„œ ์ฒด์ด๋‹์„ ํ†ตํ•ด ์„ค์ •ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋…ธํ…Œ์ด์…˜๋งŒ ์„ค์ •ํ•œ๋‹ค๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋„ ๊ฐ ์š”์ฒญ ๋ฉ”์„œ๋“œ ๋ณ„ ๊ถŒํ•œ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. SecureConfig์— ์–ด๋…ธํ…Œ์ด์…˜ ์„ค์ •ํ•˜๊ธฐ ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค. : ์ปจํŠธ๋กค๋Ÿฌ ์š”์ฒญ ๋ฉ”์„œ๋“œ์—์„œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. : ์ปจํŠธ๋กค๋Ÿฌ ์š”์ฒญ ๋ฉ”์„œ๋“œ์—์„œ , ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ์š”์ฒญ ๋ฉ”์„œ๋“œ ๋ณ„ ๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์š”์ฒญ ๋ฉ”์„œ๋“œ์— , ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ โ€ฆ

March 06, 2022
springboot
spring-security
๐ŸŒฟ [Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ ์ง€๋‚œ ๋ฒˆ์— ์ด์–ด ์ด๋ฒˆ์—” ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์ด๋‹ค. ํšŒ์›๊ฐ€์ž… ํšŒ์›๊ฐ€์ž…์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ•  ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋„์›Œ์•ผ ํ•œ๋‹ค. ์ด๋•Œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ๊ฑธ์–ด๋‘”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž… ๋งํฌ๋กœ ์ ‘์†ํ•˜์—ฌ ํšŒ์›๊ฐ€์ž… ํผ์„ ์ž‘์„ฑํ•œ ๋’ค ์„œ๋ฒ„์— ์ œ์ถœํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ํšŒ์›๊ฐ€์ž… ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ ๋’ค ๋‹ค์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜์—ฌ ๋กœ๊ทธ์ธ ํ›„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์œ ๋„ํ•œ๋‹ค. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ธŒ๋ผ์šฐ์ €์— ๋„์šธ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ์•„๋ž˜์— joinForm.html ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์š”์ฒญ โ€ฆ

March 05, 2022
springboot
spring-security
๐ŸŒฟ [Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋กœ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ ๋ถ€์ œ : ํšŒ์› ๊ด€๋ฆฌ ๊ทธ ๋“œ๋†’์€ ์žฅ๋ฒฝ! ๋กœ๊ทธ์ธ ๋งŒ๋งŒํ•˜๊ฒŒ ๋ณผ๊ฒŒ ์•„๋‹ˆ๋‹คโ€ฆ^^ Spring Security Framework ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž, ๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž ์ด๋ ‡๊ฒŒ 3๊ฐœ ๊ทธ๋ฃน์˜ ๊ณ„์ • ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ถŒํ•œ ๋ฒ”์œ„ ์ด๋‚ด์—์„œ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ณดํ†ต ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž < ๊ด€๋ฆฌ์ž < ๊ฐœ๋ฐœ์ž ์ˆœ์œผ๋กœ ๋„“์€ ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ ๋˜๋Š” ํŽ˜์ด์ง€๋Š” ๊ณ„์ • ๊ฒ€์‚ฌ๋ฅผ ํ•˜๊ณ  ๋Œ๋ ค๋ณด๋‚ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์„ ์•„์ฃผ์•„์ฃผ์•„์ฃผ ์‰ฝ๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด Spring Security ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค! Spring Security Configure ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ,โ€ฆ

March 04, 2022
springboot
spring-security
๐Ÿ…ฟ๏ธ [Programmers] ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ

Programmers ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Programmers - ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ n๊ฐœ์˜ ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•˜๋Š” ๋น„์šฉ(costs)์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ์†Œ์˜ ๋น„์šฉ์œผ๋กœ ๋ชจ๋“  ์„ฌ์ด ์„œ๋กœ ํ†ตํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ return ํ•˜๋„๋ก solution์„ ์™„์„ฑํ•˜์„ธ์š”. ๋‹ค๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฑด๋„ˆ๋”๋ผ๋„, ๋„๋‹ฌํ•  ์ˆ˜๋งŒ ์žˆ์œผ๋ฉด ํ†ตํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A ์„ฌ๊ณผ B ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๊ณ , B ์„ฌ๊ณผ C ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด A ์„ฌ๊ณผ C ์„ฌ์€ ์„œ๋กœ ํ†ตํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ n๊ฐœ์˜ ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•˜๋Š” ๋น„์šฉ(costs) n costs return 4 [0,1,1,0,2,2,1,2,5,1,3,1,2,3,8]โ€ฆ

February 28, 2022
ps
programmers
๐Ÿง [Hadoop] ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค wordcount ์˜ˆ์ œ

ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค wordcount ์˜ˆ์ œ Hadoop ์„ค์น˜ ๋ฐ MapReduce ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹ค์Šต ํ™˜๊ฒฝ ์„ค์ • VMWare ์„ค์น˜ Ubuntu Linux CD image ๋‹ค์šด๋กœ๋“œ VmWare ๊ฐ€์ƒ๋จธ์‹ ์„ ์ƒ์„ฑํ•œ ๋’ค ์šด์˜์ฒด์ œ ์ด๋ฏธ์ง€๋กœ Ubuntu ์ด๋ฏธ์ง€ ์„ค์ •ํ•˜์—ฌ ๊ฐ€์ƒ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ๊ตฌ์ถ• ์ฝ˜์†”์—์„œ Hadoop ์„ค์น˜ ์ฝ˜์†”์—์„œ Hadoop ํ™˜๊ฒฝ ์„ค์ • Linux, HDFS ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ Linux ๋””๋ ‰ํ† ๋ฆฌ HDFS ๋””๋ ‰ํ† ๋ฆฌ wordcount ์˜ˆ์ œ ์‹คํ–‰ Project/src/Wordcount.java ๊ตฌํ˜„ Project/src/Driver.java ์ˆ˜์ •ํ•˜๊ธฐ ๊ฐ ์ธ์ž : ์‹คํ–‰ํ•  alias, ํŒŒ์ผ, ๋ฉ˜ํŠธ ๋งต๋ฆฌ๋“€์Šค ์ฝ”๋“œ ์ปดํŒŒ์ผ Project ๋””โ€ฆ

February 24, 2022
bigdata
hadoop
๐Ÿง [Hadoop] ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ

ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ(MapReduce Framework) ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ž€? ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ํ”„๋กœ์„ธ์‹ฑ(๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ)์€ ๋น„์‹ธ๊ณ  ๋ณต์žกํ•œ ์—ฐ์‚ฐ๋“ค์ด ์š”๊ตฌ๋œ๋‹ค. ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ์œ„ํ•ด ์ปดํ“จํ„ฐ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” scale-up(์ˆ˜์ง์  ์„ฑ๋Šฅ ํ–ฅ์ƒ) ๋ฐฉ๋ฒ•๊ณผ scale-out(์ˆ˜ํ‰์  ์„ฑ๋Šฅ ํ–ฅ์ƒ) ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, scale-outํ•œ ๋ฐฉ๋ฒ•์ด ๋น„์šฉ ์ธก๋ฉด์—์„œ ๋”์šฑ ์œ ๋ฆฌํ•˜๋‹ค. ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ž€ ์ €๋ ดํ•œ ์ปดํ“จํ„ฐ๋ฅผ ๋ชจ์•„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก scalableํ•œ ๋ณ‘๋ ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์ด๋‹ค. ๊ตฌ๊ธ€ ๋งต๋ฆฌ๋“€์Šค(MapReduce), ์•„ํŒŒ์น˜ ํ•˜๋‘ก(Hadoop) ์˜คํ”ˆ ์†Œ์Šค๋Š” ๋งต๋ฆฌโ€ฆ

February 21, 2022
bigdata
hadoop
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IPv4 ์กฐ๊ฐํ™”

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IPv4 ์กฐ๊ฐํ™” IPv4 ์กฐ๊ฐํ™” ์กฐ๊ฐํ™”(Fragmentation)๋ž€? MTU(Maximum Transmission Unit)๋ณด๋‹ค ํฐ IP ํŒจํ‚ท์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์€ ํŒจํ‚ท์œผ๋กœ ์ชผ๊ฐœ์–ด ์ „์†กํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ชฉ์ ์ง€๊นŒ์ง€ ํŒจํ‚ท์„ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์— ํ†ต๊ณผํ•˜๋Š” ๊ฐ ๋ผ์šฐํ„ฐ๋งˆ๋‹ค ์ „์†ก์— ์ ํ•ฉํ•œ ํ”„๋ ˆ์ž„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์กฐ๊ฐํ™”๋ผ๊ณ ํ•œ๋‹ค. ์กฐ๊ฐํ™”๋œ ํŒจํ‚ท์€ ์ตœ์ข… ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์กฐ๊ฐํ™”๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ๋ฌด์กฐ๊ฑด ์ตœ์ข… ๋ชฉ์ ์ง€์—์„œ๋งŒ ์žฌ์กฐ๋ฆฝ๋œ๋‹ค. IPv6์—์„œ๋Š” ์ถœ๋ฐœ์ง€์—์„œ๋งŒ ์กฐ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, IPv4๋Š” ๋ฐœ์‹ ์ง€์™€ ์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ์—์„œ๋„ ์กฐ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ MTU๋Š” 1500byteโ€ฆ

February 16, 2022
network
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์ด๋ž€? ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•ด ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•ด๋‘” ํ…Œ์ด๋ธ” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์— ์ ํ˜€์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ๋งŒ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’(0.0.0.0)์€ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ์•„์ง์€ IP ์ฃผ์†Œ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์œผ๋กœ ์ฐพ์•„๊ฐ€๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์— ๋ชฉ์ ์ง€ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์„ ๊ธฐ๋ณธ๊ฐ’(0.0.0.0)์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋Œ€์‹  ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ๊ณผ ํ†ต์‹ ํ•˜๋Š” ๊ณผ์ • ์œ„์˜ ๊ทธ๋ฆผ์—์„œ A ๋””๋ฐ”์ด์Šค๋Š” B ๋””๋ฐ”์ด์Šค์™€ ํ†ต์‹ ์„ ํ•˜๊ณ  ์‹ถ๋‹ค. ๋จผ์ € A๋Š” ์ž์‹ ์˜ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜์—ฌ โ€ฆ

February 13, 2022
network
๐ŸŽ‰ [PartyPeople] QueryDSL์„ ์ด์šฉํ•ด ๋‹ค์ค‘ ํ•ด์‹œํƒœ๊ทธ ์กฐํšŒํ•˜๊ธฐ

QueryDSL์„ ์ด์šฉํ•ด ๋‹ค์ค‘ ํ•ด์‹œํƒœ๊ทธ ์กฐํšŒํ•˜๊ธฐ ํ•ดํ”ผํ•˜์šฐ์Šค ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ํƒœ๊ทธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํŒŒํ‹ฐ๋ฃธ ํ…Œ๋งˆ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๋ชฉ์ ์— ๋”ฐ๋ฅธ ์กฐํšŒ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค. Spring + JPA ํ™˜๊ฒฝ์—์„œ ํƒœ๊ทธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด 2๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฐ”๋กœ ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ์ง€ํ‚ค๋Š” ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ jpa์— ๋งž๊ฒŒ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค. ๊ฐ„๋‹จํ•ด ๋ณด์—ฌ๋„ ๋ง‰์ƒ ๊ตฌํ˜„ํ•˜๋‹ค๋ณด๋ฉด ๋ณต์žกํ•˜๋‹ˆ ์ด๋ฒˆ์— ์ž˜ ์ •๋ฆฌํ•ด๋‘๊ณ  ๋‹ค์Œ์— ๋‹ค์‹œ ์ฐพ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค! ํ…Œ์ด๋ธ” ๊ตฌ์„ฑํ•˜๊ธฐ ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”(Join Table) ์ฐฌ์ฐฌํžˆ ์ƒ๊ฐํ•ด๋ณด์ž. ํŒŒํ‹ฐ๋ฃธ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ํ•ด์‹œํƒœ๊ทธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ๋ฃธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•ด์‹œํƒœ๊ทธ๋ฅผ ๊ฑธ์–ด ๊ฐ๊ฐ์˜ ํ•ด์‹œโ€ฆ

February 11, 2022
network
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IPv4, ICMP ํ”„๋กœํ† ์ฝœ

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IPv4, ICMP ํ”„๋กœํ† ์ฝœ IPv4 ํ”„๋กœํ† ์ฝœ IPv4 ํ”„๋กœํ† ์ฝœ์ด๋ž€? ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. IPv4 ํ”„๋กœํ† ์ฝœ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋  ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. (์•…์˜์ ์ด๋“  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋“ ) ํŒจํ‚ท์„ ์ค‘๋ณต์ ์œผ๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜ ํŒจํ‚ท์˜ ์ˆœ์„œ๋ฅผ ์ž˜๋ชป ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ์ตœ์ข… ๋ชฉ์ ์ง€๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„๋‹ฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ˆœ์ฐจ์ ์ด๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์ „๋‹ฌ์€ ์ƒ์œ„ ๊ณ„์ธต์ธ TCP์—์„œ ๋ณด์žฅํ•œ๋‹ค. IPv4 ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์กฐ 0 ~ 4 ๋ฐ”์ดํŠธ version : IPv4 ๋ฒ„์ „์ž„์„ ๋ช…์‹œ (4) IHL(IP Header Length) : ํ—ค๋”์˜ ๊ธธ์ด. IPv4 ํ”„๋กœํ† ์ฝœ ๊ธธ์ด๋Š” 20 ~ 60 ์ดโ€ฆ

February 10, 2022
network
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, ARP ํ”„๋กœํ† ์ฝœ

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, ARP ํ”„๋กœํ† ์ฝœ ARP ํ”„๋กœํ† ์ฝœ์ด๋ž€? ARP ํ”„๋กœํ† ์ฝœ์€ ๊ฐ™์€ ๋Œ€์—ญ์˜ ๋””๋ฐ”์ด์Šค์™€ ํ†ต์‹  ์‹œ ๋””๋ฐ”์ด์Šค์˜ MAC ์ฃผ์†Œ๋ฅผ ์•Œ์ง€ ๋ชปํ•  ๋•Œ IP ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ARP ํ”„๋กœํ† ์ฝœ์˜ ํ†ต์‹  ๊ณผ์ • ์š”์ฒญ ๋ณด๋‚ด๊ธฐ ARP ํ”„๋กœํ† ์ฝœ์€ OSI 7๊ณ„์ธต ์ค‘ 3๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด๋ฏ€๋กœ 2๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ธ Ethernet ํ”„๋กœํ† ์ฝœ์— ์˜ํ•ด ์บก์Аํ™”๋œ๋‹ค. ์ด๋•Œ 2๊ณ„์ธต Ethernet ํ”„๋กœํ† ์ฝœ์—๋Š” ๋„์ฐฉ์ง€ MAC ์ฃผ์†Œ์™€ ์ถœ๋ฐœ์ง€ MAC ์ฃผ์†Œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋„์ฐฉ์ง€ MAC ์ฃผ์†Œ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ()๋กœ ๋ณด๋‚ธ๋‹ค. 3๊ณ„์ธต ARP ํ”„๋กœํ† ์ฝœ์€ ๋™์ž‘์ฝ”๋“œ๋ฅผ ์š”์ฒญ์ธ 1๋ฒˆ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋„์ฐฉ์ง€ MACโ€ฆ

February 07, 2022
network
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IP ์ฃผ์†Œ

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 3๊ณ„์ธต, IP ์ฃผ์†Œ 3๊ณ„์ธต 3๊ณ„์ธต์˜ ๊ธฐ๋Šฅ LAN๊ณผ LAN์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์„ ์—ฐ๊ฒฐํ•˜์—ฌ WAN์„ ๋งŒ๋“ ๋‹ค. 3๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ WAN์—์„œ๋Š” IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค. IPv4 : ๊ฐ ๋””๋ฐ”์ด์Šค(PC)์— ํ• ๋‹น๋œ IP ์ฃผ์†Œ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ : IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์„ ๊ทœ์ • ๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ : ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ถœ์ž…๊ตฌ ์—ญํ•  3๊ณ„์ธต ํ”„๋กœํ† ์ฝœ ๋Œ€ํ‘œ์ ์œผ๋กœ IPv4, ARP, ICMP ํ”„๋กœํ† ์ฝœ ๋“ฑ์ด ์žˆ๋‹ค. IP ์ฃผ์†Œ ์ผ๋ฐ˜์ ์ธ IP ์ฃผ์†Œ(Classful IP ์ฃผ์†Œ) ์ดˆ์ฐฝ๊ธฐ์—๋Š” Classfulํ•œ IP ์ฃผ์†Œ, ์ฆ‰ ํด๋ž˜์Šค๋ณ„๋กœ ๊ตฌ๋ถ„๋œ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. โ€ฆ

February 06, 2022
network
๐Ÿ…ฟ๏ธ [Programmers] ์™„์ „ํƒ์ƒ‰ ์†Œ์ˆ˜ ์ฐพ๊ธฐ

Programmers ์™„์ „ํƒ์ƒ‰ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Programmers - ์™„์ „ํƒ์ƒ‰ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ž…๋ ฅ ๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers numbers return โ€œ17โ€ 3 โ€œ011โ€ 2 ์ถœ๋ ฅ ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์ถœ๋ ฅํ•œ๋‹ค. ์ œํ•œ numbers๋Š” ๊ธธ์ด 1 ์ด์ƒ 7 ์ดํ•˜์ธ ๋ฌธโ€ฆ

February 04, 2022
ps
programmers
๐ŸŒฟ [WEB] Vue + Spring Boot์œผ๋กœ ํŒŒ์ผ๊ณผ DTO ํ•จ๊ป˜ REST ํ†ต์‹ ํ•˜๊ธฐ(FormData() + MultipartFile)

Vue + Spring Boot์œผ๋กœ ํŒŒ์ผ๊ณผ DTO ํ•จ๊ป˜ REST ํ†ต์‹ ํ•˜๊ธฐ Spring Boot Controller ๋ถ€๋ถ„ @PostMapping ์–ด๋…ธํ…Œ์ด์…˜ ์ธ์ž ์ค‘ ๋ฅผ ๋กœ ์„ค์ • file(MultipartFile)๊ณผ DTO๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ธฐ ์œ„ํ•ด ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ ์ด๋•Œ ํ”„๋ก ํŠธ์—์„œ FormData() ๊ฐ์ฒด ๋ณด๋‚ด์ค„ ๋•Œ key๋กœ @RequestPart์—์„œ ์„ค์ •ํ•œ value๋ฅผ ์ž˜ ์„ค์ •ํ•ด์•ผํ•จ Vue Axios ๋ถ€๋ถ„ file์„ ๋ฐ›๋Š” input ํƒœ๊ทธ ์ž์ฒด๋ฅผ getElementById()๋กœ ๋ฐ›์•„์™€์„œ ํŒŒ์ผ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ํŒŒ์ผ๋กœ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ์ด๋ฅผ ํŒŒ์ผ ๋ณ€์ˆ˜๋กœ ์ €์žฅ room ๊ฐ์ฒด๋Š” new Blob()์•ˆ์— ์„ ํ†ตํ•ด JSON ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค, tโ€ฆ

January 28, 2022
spring
springboot
web
restapi
vue
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 2๊ณ„์ธต, ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต

๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ - 2๊ณ„์ธต, ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต 2๊ณ„์ธต์—์„œ ํ•˜๋Š”์ผ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ(๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ)์— ์กด์žฌํ•˜๋Š” ์žฅ๋น„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ  LAN(Local Area Network) ๋ฒ”์œ„์˜ ์žฅ๋น„ ๊ฐ„ ํ†ต์‹  ์„œ๋กœ ๋‹ค๋ฅธ LAN์— ์กด์žฌํ•˜๋Š” ์žฅ๋น„๋ผ๋ฆฌ๋Š” 2๊ณ„์ธต์—์„œ ํ†ต์‹ ํ•  ์ˆ˜ ์—†์Œ MAC ์ฃผ์†Œ 2๊ณ„์ธต ํ†ต์‹ ์ด ์ปค๋ฒ„ํ•˜๋Š” LAN ๋ฒ”์œ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ์ธ MAC ์ฃผ์†Œ ์ด๋‹ค. ์ „์„ธ๊ณ„ ์žฅ๋น„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ MAC ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ์ธ ๋งŒํผ ๋ฐ”๊พธ๊ธฐ๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. Mac ์ฃผ์†Œ๋Š” ์œ„์™€ ๊ฐ™์ด 16์ง„์ˆ˜ 6๋ฐ”์ดํŠธ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. ์•ž 3 ๋ฐ”์ดํŠธ : OUI๋กœ ์ผ์ข…์˜ ์žฅ๋น„ ์ œ์กฐํšŒ์‚ฌ ์‹๋ณ„ ID ๋’ค 3 ๋ฐ”์ดํŠธ : ์ œ์กฐโ€ฆ

January 27, 2022
network
๐Ÿ“ก [Network] ๋„คํŠธ์›Œํฌ์™€ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ

๋„คํŠธ์›Œํฌ์™€ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋ชจ๋ธ ๋„คํŠธ์›Œํฌ ๋„คํŠธ์›Œํฌ๋ž€? ๋…ธ๋“œ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ „๊ธฐ ํ†ต์‹ ๋ง. ๋ถ„์‚ฐ๋˜์–ด์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ํ†ต์‹ ๋ง์œผ๋กœ ์—ฐ๊ฒฐํ•œ ๊ฒƒ ๋„คํŠธ์›Œํฌ ๋ถ„๋ฅ˜ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ LAN(Local Area Network) WAN(Wide Area Networ) MAN(Metropolitan Area Network) LAN < WAN < MAN ์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ์ปค์ง€๋ฉฐ LAN๊ณผ LAN๋“ค์ด ๋ชจ์ธ ๋„คํŠธ์›Œํฌ๊ฐ€ WAN์ด ๋จ. ์—ฐ๊ฒฐ ํ˜•ํƒœ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ starํ˜• : ์ค‘์•™ ๋…ธ๋“œ์— ๋ชจ๋“  ์žฅ๋น„๊ฐ€ ์—ฐ๊ฒฐ๋จ. ์ค‘์•™ ๋…ธ๋“œ๊ฐ€ ๊ณ ์žฅ๋‚˜๋ฉด ํ•ด๋‹น ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์žฅ๋น„๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์Œ. meshํ˜• : ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ. ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธโ€ฆ

January 26, 2022
network
๐ŸŒฟ [JAVA] PriorityQueue ์ •๋ ฌ ์™œ ์•ˆ๋ผ?

PriorityQueue ์ •๋ ฌ ์™œ ์•ˆ๋ผ? PriorityQueue ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋Š” ๋ฒ• ๊ทผ๋ฐ ์ •๋ ฌ ์™œ ์•ˆ๋ผโ€ฆ? ์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌ์ด ๋˜๊ธดํ•˜์ง€๋งŒ ์ •๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์˜ค๋กœ์ง€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ๋งŒ์„ ๋ณด์žฅํ• ๋ฟ! PriorityQueue ์ •๋ ฌ ์™œ ์•ˆ๋ผ? PriorityQueue ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋Š” ๋ฒ• ๊ทผ๋ฐ ์ •๋ ฌ ์™œ ์•ˆ๋ผโ€ฆ?

January 21, 2022
java
language
๐Ÿ–ฅ [WebRTC OpenVidu] OpenVidu

OpenVidu๊ฐ€ ๋ญ˜๊นŒ? ์šฐ๋ฆฌ์˜ ์›น ํ”„๋กœ์ ํŠธ ๋™์ž‘ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์›น ํŽ˜์ด์ง€ ์ ‘์† vue๋กœ ๊ตฌํ˜„ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง„๋‹ค. ํ”„๋ก ํŠธ ๋‹จ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ http ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. spring์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ http ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ ์„œ๋ฒ„๊ฐ€ http ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ฆ‰ vue ํด๋ผ์ด์–ธํŠธ + spring ์„œ๋ฒ„ ๋กœ ๊ตฌ์„ฑ๋œ ์ƒํƒœ ์—ฌ๊ธฐ์— ํด๋ผ์ด์–ธํŠธ๋ผ๋ฆฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™”์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ(WebRTC) ์œ„ํ•ด ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.(์‚ฌ์‹ค ํ”„๋ก ํŠธ ๋‹จ(ํด๋ผ์ด์–ธํŠธ)์—์„œ P2P ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆด ๊ฒฝ์šฐ ์ดโ€ฆ

January 21, 2022
project
๐ŸŒฟ [WEB] PUT vs PATCH

PUT vs PATCH PUT๊ณผ PATCH ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์  PUT ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ, ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ธ์ž๋กœ ๋“ค์–ด์˜จ ๊ฐ’์„ ์ƒˆ๋กญ๊ฒŒ ์ €์žฅํ•ด์ฃผ์–ด์•ผํ•˜๋ฏ€๋กœ ๊ฐœ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์ด ์™„์ „ํ•œ ์ƒํƒœ์—ฌ์•ผํ•จ(์ผ๋ถ€ ๊ฐ’๋งŒ ๋ณด๋‚ผ ๊ฒฝ์šฐ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ ์‹œ ํŠน์ • ์†์„ฑ์€ null๋กœ ์ฑ„์›Œ์ง) PATCH ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€ ๊ฐ’์„ ๋ณ€๊ฒฝ ์ผ๋ถ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๊ฐ’๋งŒ ๊ฐ–๋Š” ํด๋ž˜์Šค(๊ฐ์ฒด)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ธ์ž๋กœ ๋ฐ›์Œ PUT vs PATCH PUT PATCH

January 19, 2022
spring
springboot
web
restapi
๐Ÿ…ฑ๏ธ [BOJ] 1937 ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค

BOJ 1937 ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 1937๋ฒˆ ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค n ร— n์˜ ํฌ๊ธฐ์˜ ๋Œ€๋‚˜๋ฌด ์ˆฒ์ด ์žˆ๋‹ค. ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค๋Š” ์–ด๋–ค ์ง€์—ญ์—์„œ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋จน๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณณ์˜ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋‹ค ๋จน์–ด ์น˜์šฐ๋ฉด ์ƒ, ํ•˜, ์ขŒ, ์šฐ ์ค‘ ํ•œ ๊ณณ์œผ๋กœ ์ด๋™์„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ๊ทธ๊ณณ์—์„œ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋จน๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹จ ์กฐ๊ฑด์ด ์žˆ๋‹ค. ์ด ํŒ๋‹ค๋Š” ๋งค์šฐ ์š•์‹ฌ์ด ๋งŽ์•„์„œ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋จน๊ณ  ์ž๋ฆฌ๋ฅผ ์˜ฎ๊ธฐ๋ฉด ๊ทธ ์˜ฎ๊ธด ์ง€์—ญ์— ๊ทธ ์ „ ์ง€์—ญ๋ณด๋‹ค ๋Œ€๋‚˜๋ฌด๊ฐ€ ๋งŽ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด ํŒ๋‹ค์˜ ์‚ฌ์œก์‚ฌ๋Š” ์ด๋Ÿฐ ํŒ๋‹ค๋ฅผ ๋Œ€๋‚˜๋ฌด ์ˆฒ์— ํ’€์–ด ๋†“์•„์•ผ ํ•˜๋Š”๋ฐ, ์–ด๋–ค ์ง€์ ์— ์ฒ˜์Œ์— ํ’€์–ด ๋†“์•„์•ผ ํ•˜๊ณ , ์–ด๋–ค ๊ณณ์œผ๋กœ ์ด๋™์„ ์‹œ์ผœ์•ผ ํŒ๋‹ค๊ฐ€ ์ตœ๋Œ€โ€ฆ

January 16, 2022
ps
baekjoon
๐Ÿ…ฑ๏ธ [BOJ] 1701 Cubeditor

BOJ 1701 Cubeditor ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 1701๋ฒˆ Cubeditor Cubelover๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Whitespace์˜ ์ฝ”๋”ฉ์„ ๋„์™€์ฃผ๋Š” ์–ธ์–ด์ธ Cubelang์„ ๋งŒ๋“ค์—ˆ๋‹ค. Cubelang์„ ์ด์šฉํ•ด ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋‹ˆ, ์ ์  ์ด ์–ธ์–ด์— ๋งž๋Š” ์ƒˆ๋กœ์šด ์—๋””ํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์˜ค๋žœ ์‹œ๊ฐ„ ๊ณ ์ƒํ•œ ๋์— ์ƒˆ๋กœ์šด ์—๋””ํ„ฐ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ์—๋””ํ„ฐ์˜ ์ด๋ฆ„์€ Cubeditor์ด๋‹ค. ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋Š” ์ฐพ๊ธฐ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์—๋””ํ„ฐ๋Š” ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋Š” ๋ฌธ์ž์—ด์ด ๋‹จ ํ•œ ๋ฒˆ๋งŒ ๋‚˜์™€๋„ ์ฐพ๋Š”๋‹ค. Cubelover๋Š” ์ด ๊ธฐ๋Šฅ์€ Cubelang์— ๋ถ€์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. Cubelang์—โ€ฆ

January 04, 2022
ps
baekjoon
๐Ÿ“šโ˜•๏ธ [JPA] JPA ์‹œ์ž‘ํ•˜๊ธฐ

JPA ์‹œ์ž‘ํ•˜๊ธฐ 1. JPA๋ž€? 1) JPA ๋„์ž… ์ด์ „์˜ ๋ฌธ์ œ๋“ค ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ์กฐํšŒํ•˜๊ณ  ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DB(๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์–ด์ฉ” ์ˆ˜ ์—†์ด DB๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด์ธ SQL์— ์ต์ˆ™ํ•ด์กŒ๊ณ , ์–ด์ฉ” ๋•Œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค SQL๋ฌธ ๊ตฌํ˜„์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ DB๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด SQL๋ฌธ์„ ์ง์ ‘ ๋‹ค๋ฃจ๋ฉด์„œ ๋งŽ์€ ๋ถˆํŽธํ•œ ์ ์ด ๋ถ€๊ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ์‹ซ์–ดํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…๊ณผ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ SQL ์ˆ˜์ •์ด ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋‚˜๋น„ํšจ๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๋งค๋ ฅ์„ ๋ˆ„๋ฆด ์ˆ˜ ์—†๋Š” ์—”ํ‹ฐํ‹ฐ ๊ตฌ์กฐ ์ด์™ธ์˜ ๋งŽ์€ ๊ท€์ฐฎ์€ ๋ฌธ์ œ๋“คโ€ฆ๐Ÿ˜• ์ด ๋ชจ๋“ โ€ฆ

December 28, 2021
jpa
๐Ÿ“šโ˜•๏ธ [Effective Java 3/E] ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ

2์žฅ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด - item1. ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ ์ƒ์„ฑ์ž(constructor)์™€ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ(static factory method) ๋‹ค์‹œ ์ƒ์„ฑ์ž๋ถ€ํ„ฐ ์ƒ์„ฑ์ž๋ž€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•  ๋•Œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ•„์š”์— ๋”ฐ๋ผ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ ๊ทธ๋Ÿผ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ(static factory method)๋Š” ๋ญ˜๊นŒ? ์ด๋ฆ„์„ ํ•˜๋‚˜์”ฉ ๋œฏ์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ์—ญํ• ์„ ํ•˜๋Š” ํด๋ž˜์Šค ๋ฉ”โ€ฆ

December 19, 2021
java
effective-java
๐Ÿ…ฑ๏ธ [BOJ] 13013 ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด

BOJ 13013 ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 13013๋ฒˆ ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด ๋ฌธ์ž์—ด S์˜ i๋ฒˆ์งธ ์ ‘๋ฏธ์‚ฌ๋Š” S์˜ i๋ฒˆ์งธ ๊ธ€์ž์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์ ‘๋ฏธ์‚ฌ(Suffix)์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, S = โ€œabcdeโ€์ธ ๊ฒฝ์šฐ์— 0๋ฒˆ์งธ ์ ‘๋ฏธ์‚ฌ๋Š” โ€œabcdeโ€, 3๋ฒˆ์งธ ์ ‘๋ฏธ์‚ฌ๋Š” โ€œdeโ€ ์ด๋‹ค. S์˜ ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด์€ S์˜ ๋ชจ๋“  ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์ด๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์€ ์ ‘๋ฏธ์‚ฌ ๋ฒˆํ˜ธ์ด๊ณ , ์ •๋ ฌ์€ ์ ‘๋ฏธ์‚ฌ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ์ ‘๋ฏธ์‚ฌ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, S = โ€œabcaโ€์ธ ๊ฒฝ์šฐ์— ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด์€ (3, 0, 1, 2)๊ฐ€ ๋œ๋‹ค. ๊ธธ์ด๊ฐ€ N์ธ ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด์„โ€ฆ

December 15, 2021
ps
baekjoon
๐Ÿ…ฑ๏ธ [BOJ] 5052 ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก

BOJ 5052 ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 5052๋ฒˆ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ์ด ๋ชฉ๋ก์ด ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž ๊ธด๊ธ‰์ „ํ™”: 911 ์ƒ๊ทผ: 97 625 999 ์„ ์˜: 91 12 54 26 ์ด ๊ฒฝ์šฐ์— ์„ ์˜์ด์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ „ํ™”๊ธฐ๋ฅผ ๋“ค๊ณ  ์„ ์˜์ด ๋ฒˆํ˜ธ์˜ ์ฒ˜์Œ ์„ธ ์ž๋ฆฌ๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„ ๋ฐ”๋กœ ๊ธด๊ธ‰์ „ํ™”๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ๋ชฉ๋ก์€ ์ผ๊ด€์„ฑ์ด ์—†๋Š” ๋ชฉ๋ก์ดโ€ฆ

December 14, 2021
ps
baekjoon
๐Ÿ…ฑ๏ธ [BOJ] 21609 ์ƒ์–ด ์ค‘ํ•™๊ต

BOJ 21609 ์ƒ์–ด ์ค‘ํ•™๊ต ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 21609๋ฒˆ ์ƒ์–ด ์ค‘ํ•™๊ต ์ƒ์–ด ์ค‘ํ•™๊ต์˜ ์ฝ”๋”ฉ ๋™์•„๋ฆฌ์—์„œ ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ๊ฒŒ์ž„์€ ํฌ๊ธฐ๊ฐ€ Nร—N์ธ ๊ฒฉ์ž์—์„œ ์ง„ํ–‰๋˜๊ณ , ์ดˆ๊ธฐ์— ๊ฒฉ์ž์˜ ๋ชจ๋“  ์นธ์—๋Š” ๋ธ”๋ก์ด ํ•˜๋‚˜์”ฉ ๋“ค์–ด์žˆ๊ณ , ๋ธ”๋ก์€ ๊ฒ€์€์ƒ‰ ๋ธ”๋ก, ๋ฌด์ง€๊ฐœ ๋ธ”๋ก, ์ผ๋ฐ˜ ๋ธ”๋ก์ด ์žˆ๋‹ค. ์ผ๋ฐ˜ ๋ธ”๋ก์€ M๊ฐ€์ง€ ์ƒ‰์ƒ์ด ์žˆ๊ณ , ์ƒ‰์€ M์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๊ฒ€์€์ƒ‰ ๋ธ”๋ก์€ -1, ๋ฌด์ง€๊ฐœ ๋ธ”๋ก์€ 0์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. (i, j)๋Š” ๊ฒฉ์ž์˜ i๋ฒˆ ํ–‰, j๋ฒˆ ์—ด์„ ์˜๋ฏธํ•˜๊ณ , |r1 - r2| + |c1 - c2| = 1์„ ๋งŒ์กฑํ•˜๋Š” ๋‘ ์นธ (r1, c1)๊ณผ (r2, c2)๋ฅผ ์ธ์ ‘ํ•œ ์นธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ธ”๋ก ๊ทธ๋ฃนโ€ฆ

December 08, 2021
ps
baekjoon
๐Ÿ…ฑ๏ธ [BOJ] 1799 ๋น„์ˆ

BOJ 1799 ๋น„์ˆ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 1799๋ฒˆ ๋น„์ˆ ์„œ์–‘ ์žฅ๊ธฐ์ธ ์ฒด์Šค์—๋Š” ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๋น„์ˆ(bishop)์ด ์žˆ๋‹ค. < ๊ทธ๋ฆผ 1 >๊ณผ ๊ฐ™์€ ์ •์‚ฌ๊ฐํ˜• ์ฒด์ŠคํŒ ์œ„์— B๋ผ๊ณ  ํ‘œ์‹œ๋œ ๊ณณ์— ๋น„์ˆ์ด ์žˆ์„ ๋•Œ ๋น„์ˆ์€ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์—ฌ O๋กœ ํ‘œ์‹œ๋œ ์นธ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ง์„ ์žก์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฒด์ŠคํŒ ์œ„์—๋Š” ๋น„์ˆ์ด ๋†“์ผ ์ˆ˜ ์—†๋Š” ๊ณณ์ด ์žˆ๋‹ค. < ๊ทธ๋ฆผ 2 >์—์„œ ์ฒด์ŠคํŒ์— ์ƒ‰์น ๋œ ๋ถ€๋ถ„์€ ๋น„์ˆ์ด ๋†“์ผ ์ˆ˜ ์—†๋‹ค๊ณ  ํ•˜์ž. ์ด์™€ ๊ฐ™์€ ์ฒด์ŠคํŒ์— ์„œ๋กœ๊ฐ€ ์„œ๋กœ๋ฅผ ์žก์„ ์ˆ˜ ์—†๋„๋ก ํ•˜๋ฉด์„œ ๋น„์ˆ์„ ๋†“๋Š”๋‹ค๋ฉด < ๊ทธ๋ฆผ 3 >๊ณผ ๊ฐ™์ด ์ตœ๋Œ€ 7๊ฐœ์˜ ๋น„์ˆ์„ ๋†“์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒ‰์น ๋œ ๋ถ€๋ถ„์—๋Š” ๋น„์ˆ์ดโ€ฆ

December 08, 2021
ps
baekjoon
๐Ÿ…ฑ๏ธ [BOJ] 2023 ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜

BOJ 2023 ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 2023๋ฒˆ ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜ ์ˆ˜๋นˆ์ด๊ฐ€ ์„ธ์ƒ์—์„œ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ ์†Œ์ˆ˜์ด๊ณ , ์ทจ๋ฏธ๋Š” ์†Œ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๋…ธ๋Š” ๊ฒƒ์ด๋‹ค. ์š”์ฆ˜ ์ˆ˜๋นˆ์ด๊ฐ€ ๊ฐ€์žฅ ๊ด€์‹ฌ์žˆ์–ด ํ•˜๋Š” ์†Œ์ˆ˜๋Š” 7331์ด๋‹ค. 7331์€ ์†Œ์ˆ˜์ธ๋ฐ, ์‹ ๊ธฐํ•˜๊ฒŒ๋„ 733๋„ ์†Œ์ˆ˜์ด๊ณ , 73๋„ ์†Œ์ˆ˜์ด๊ณ , 7๋„ ์†Œ์ˆ˜์ด๋‹ค. ์ฆ‰, ์™ผ์ชฝ๋ถ€ํ„ฐ 1์ž๋ฆฌ, 2์ž๋ฆฌ, 3์ž๋ฆฌ, 4์ž๋ฆฌ ์ˆ˜ ๋ชจ๋‘ ์†Œ์ˆ˜์ด๋‹ค! ์ˆ˜๋นˆ์ด๋Š” ์ด๋Ÿฐ ์ˆซ์ž๋ฅผ ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์˜€๋‹ค. ์ˆ˜๋นˆ์ด๋Š” N์ž๋ฆฌ์˜ ์ˆซ์ž ์ค‘์—์„œ ์–ด๋–ค ์ˆ˜๋“ค์ด ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜์ธ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋นˆ์ด๋ฅผ ์œ„ํ•ด N์ž๋ฆฌ ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ฐพ์•„๋ณด์ž. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— N(1 โ‰คโ€ฆ

December 07, 2021
ps
baekjoon
๐Ÿก [HappyHouse Proj.] axios ํ†ต์‹  ์‹œ params ๋ถ™์—ฌ์„œ GET ๋ฐฉ์‹ ํ†ต์‹ ํ•˜๊ธฐ

axios ํ†ต์‹  ์‹œ params ๋ถ™์—ฌ์„œ GET ๋ฐฉ์‹ ํ†ต์‹ ํ•˜๊ธฐ ์ผ๊ฐ„ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) HappyHouse ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฐฐ๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฒŒ์‹œํŒ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘ ํŠน์ • ํƒœ๊ทธ๋“ค์ด ํฌํ•จ๋œ ๊ฒŒ์‹œ๊ธ€์„ ์กฐํšŒํ•˜๊ณ ์ž ํ–ˆ๋‹ค. โ€œ์กฐํšŒโ€ ๋ชฉ์ ์ด๊ธฐ๋•Œ๋ฌธ์— ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณด๋‚ด์•ผ ํ–ˆ๊ณ , ํƒœ๊ทธ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผํ•˜๋ฏ€๋กœ ๋กœ ๋ณด๋‚ด๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ทผ๋ฐ, ์•„๋ฌด๋ฆฌ ํ”„๋ก ํŠธ์—์„œ ํƒœ๊ทธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ”๋””์— ํฌํ•จํ•ด์„œ ๋ณด๋‚ด๋„ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ๋Š” ๋ฐ”๋””๊ฐ€ ์—†๋‹ค๊ณ  ํ•˜๋Š”๊ฑฐ๋‹ค!! URI๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ์ค„ ์•Œ๊ณ  ๊ฒฝ๋กœ๋„ ๋ฐ”๊ฟ”๋ณด๊ณ  ์ด๊ฒƒ ์ €๊ฒƒ ๋‹คํ•ด๋ดค๋Š”๋ฐ ์•Œ๊ณ ๋ณด๋‹ˆ GET + Body๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๊ฒƒโ€ฆ

November 22, 2021
project
happyhouse
๐Ÿก [HappyHouse Proj.] axios ํ†ต์‹  ์‹œ http ์ƒํƒœ์ฝ”๋“œ ๋ฐ›์•„์˜ค๊ธฐ

axios ํ†ต์‹  ์‹œ http ์ƒํƒœ์ฝ”๋“œ ๋ฐ›์•„์˜ค๊ธฐ ์ผ๊ฐ„ ๋‘๋”์ง€ ํƒˆ์ถœ๊ธฐ (๋ถ€์ œ. ์‚ฝ์งˆ ๋ฉˆ์ถฐ!โ€ฆ) HappyHouse ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง„ํ–‰ํ•˜๋Š” HappyHouse ํ”„๋กœ์ ํŠธ๋Š” ํ™˜๊ฒฝ์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ ํ™˜๊ฒฝ์˜ ํ”„๋ก ํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. vue์˜ ๊ฐ•์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ SPA(Single Page Application) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋น„๋™๊ธฐ ํ†ต์‹ ์ด ํ•„์ˆ˜์ ์ธ๋ฐ, ์ด ๋•Œ ๋ฅผ ์“ด๋‹ค. JQuery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ”„๋ก ํŠธ๋ฅผ ๋งŒ๋“ค ๋• ๋กœ ํ†ต์‹ ํ–ˆ์ง€๋งŒ, vue์—์„œ๋Š” axios๋ฅผ ๊ฐ•๋ ฅ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋กœ axios๋กœ ํ†ต์‹ ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. SPA ํ”„๋กœ์ ํŠธ์—์„œ ๋น„๋™๊ธฐ ํ†ต์‹ โ€ฆ

November 19, 2021
project
happyhouse
๐ŸŒฟ [Spring Boot] ์Šคํ”„๋ง ๋ถ€ํŠธ ์ดˆ๊ธฐ ์„ค์ •

Spring Boot Spring ์ดˆ๊ธฐ ์„ค์ • ์—์„œ ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ, ๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๋ฐฉ๋Œ€ํ•˜๊ณ  ๋ณต์žกํ•œ ์ดˆ๊ธฐ ์„ค์ •(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์˜์กด์„ฑ ๋“ฑ)์— ์••๋„๋˜๊ธฐ ์‰ฝ๋‹ค. SpringBoot๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์กฐํ•ฉ์„ ๋งŒ๋“ค์–ด ๋ณต์žกํ•œ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” Spring์˜ ๋ฐœ์ „๋œ ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. Spring Boot ํŠน์ง• ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— Tomcat๊ณผ ๊ฐ™์€ WAS๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. WARํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JARํŒŒ์ผ ํ˜•ํƒœ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Spring Boot(Spring Starter Project) Spring Starter Project ์ƒ์„ฑ -> ํ”„๋กœ์ ํŠธ ๋ช…โ€ฆ

November 01, 2021
spring
springboot
๐ŸŒฑ [Spring] ์Šคํ”„๋ง MVC

Spring MVC MVC ํŒจํ„ด Model2(Web MVC) ์š”์ฒญ ํ๋ฆ„ ์Šคํ”„๋ง MVC๋Š” ์œ„์™€ ๊ฐ™์€ Model2 ๊ตฌ์กฐ์˜ MVC Architecture์™€ Front Controller Pattern์„ ์ง€์›ํ•œ๋‹ค. Spring MVC ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์‹คํ–‰ ์ˆœ์„œ DispatcherServlet(Front Controller) ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ตœ์ดˆ๋กœ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ฒ˜๋ฆฌ๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์‘๋‹ต์œผ๋กœ ๋ฐœ์‹ ํ•œ๋‹ค. Controller์—๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ , Controller๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์„ View์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์‘๋‹ต์„ ์ƒ์„ฑํ•œ๋‹ค. Handlโ€ฆ

October 30, 2021
spring
๐ŸŒฑ [Spring] ์Šคํ”„๋ง ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ์„ค์ •

์Šคํ”„๋ง ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ์„ค์ • 1. facet ๋ฒ„์ „ ๋งž์ถ”๊ธฐ ํ”„๋กœ์ ํŠธ ์šฐ ํด๋ฆญ > Properties > Project Facets > Dynamic Web Module ๋ฒ„์ „ ์„ค์ •, Java ๋ฒ„์ „ ์„ค์ • 2. pom.xml ์„ค์ • Maven : ์ž๋ฐ” ์ž๋™ํ™” build tool. Project Object Model : ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์„ค์ •, ์˜์กด์„ฑ ์„ค์ •, ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ด€๋ฆฌ ๋“ฑ ์ฆ‰, maven์„ ํ†ตํ•ด ๋นŒ๋“œ๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ pom.xml์ด๋ผ๋Š” ์„ค์ • ํŒŒ์ผ์— ์ •์˜ํ•ด๋‘๋ฉด, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ํ”„๋กœ์ ํŠธ๋ฅผ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์ƒ์„ฑ ์ดํ›„ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ โ€ฆ

October 29, 2021
spring
๐ŸŽจ [Design Pattern] Visitor Pattern

Visitor Pattern(๋น„์ง€ํ„ฐ ํŒจํ„ด) (๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)์™€ (์•Œ๊ณ ๋ฆฌ์ฆ˜)์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์ƒˆ๋กœ์šด ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๋”๋ผ๋„ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ์ฑ„ ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. Visitor Pattern์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋นŒ๋“œ ์—… ์œ ๋ฆฌ์ปต๊ณผ ์‹ ์„  ์‹ํ’ˆ์„ ํŒŒ๋Š” ์‡ผํ•‘๋ชฐ ์‚ฌ์žฅ๋‹˜์ด ๋๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๋ˆˆ์น˜ ์ฑ˜๊ฒ ์ง€๋งŒ ์ด ์˜ˆ์ œ์—์„œ ๊ฐ์ฒด๋Š” ์ƒํ’ˆ(์œ ๋ฆฌ์ปต, ์‹ ์„  ์‹ํ’ˆ)์ด ๋  ๊ฒƒ์ด๊ณ , ๋กœ์ง์€ ์ƒํ’ˆ ์ฃผ๋ฌธ์ด ๋  ๊ฒƒ์ด๋‹ค. ์ƒํ’ˆ : ์œ ๋ฆฌ์ปต, ์‹ ์„  ์‹ํ’ˆ ์ฃผ๋ฌธ : ํฌ์žฅ, ๋ฐฐ์†ก, ํฌ์ธํŠธ ์ ๋ฆฝ(์ถ”๊ฐ€ ๊ธฐ๋Šฅ) ์ด์ œ ์ด ์˜ˆ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์งš์–ด๋ณด๊ณ , ์ด ๋ฌธ์ œ๋“ค์„ ์–ด๋–ป๊ฒŒ Visitor ํŒจํ„ด์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๋ฌธ์ œ 1. โ€ฆ

October 24, 2021
design-pattern
๐ŸŽจ [Design Pattern] Builder Pattern

Builder Pattern ๋ณต์žกํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•ด ํ•จ์œผ๋กœ์จ ๋˜‘๊ฐ™์€ ์ƒ์„ฑ ๊ณผ์ •์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด ํ‘œํ˜„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ƒ์„ฑ ๋””์ž์ธ ํŒจํ„ด Builder ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ด์œ  - ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ - ์ฒด์ด๋‹์„ ํ†ตํ•œ ๋ช…๋ช…๋œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉ์œผ๋กœ ๊ฐ€๋…์„ฑ ์ฆ์ง„ - ํ•„์ˆ˜์ ์ธ ๋ณ€์ˆ˜์™€ ์„ ํƒ์ ์ธ ๋ณ€์ˆ˜๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑ ๊ฐ€๋Šฅ - ์ƒˆ๋กœ์šด ๋ฉค๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ๊ธฐ์กด์˜ ๊ฐ์ฒด ์ƒ์„ฑ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š” ์—†์Œ - ๊ฐ์ฒด ์ƒ์„ฑ ๊ณผ์ •์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๋…ผ๋ฆฌ์ ์ธ ์—๋Ÿฌ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ ๐Ÿ’ก ๋ถˆ๋ณ€์ ์ธ ๊ฐ์ฒด๋กœ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ์ด์œ  ๋ถˆ๋ณ€์„ฑ()์ด๋ž€? ๊ฐ์ฒด๊ฐ€ ์ดˆ๊ธฐ์— ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ ์ดํ›„์—๋Š” ์ ˆ๋Œ€ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ์‹œ์— ๋ชจ๋“  โ€ฆ

October 11, 2021
design-pattern
โ˜•๏ธ [JAVA] ์ „๋‹ฌ์ธ์ž(Argument)์™€ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter), ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์˜ Call by Value

Argument vs Parameter ์ „๋‹ฌ์ธ์ž์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ์ธ์ž(Argument) ๋ถ€๋ชจ ํ•จ์ˆ˜์—์„œ ์ž์‹ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ž์‹ ํ•จ์ˆ˜์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter) ๋ถ€๋ชจ ํ•จ์ˆ˜์—์„œ ์ž์‹ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ๐Ÿ’ก ์ „๋‹ฌ์ธ์ž์™€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์ „๋‹ฌ์ธ์ž๋Š” ๊ฐ’(value) ์„ ์˜๋ฏธํ•˜๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜(variable)๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ! ์ผ๋ถ€๋Š” โ€œ์ธ์žโ€๋ผ๋Š” ํ‘œํ˜„์ด ์ž˜๋ชป๋˜์—ˆ๊ณ  โ€œ์ธ์ˆ˜โ€๋ผ๋Š” ํ‘œํ˜„์ด ๋” ์•Œ๋งž๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์‚ฌ์‹ค ์ธ์ž๋ƒ ์ธ์ˆ˜๋ƒ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ โ€œ์ „๋‹ฌ์ธ์žโ€์™€ โ€œ๋งค๊ฐœ๋ณ€์ˆ˜โ€์˜ ์ฐจ์ด๋ฅผ ์•„๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค. ์˜ˆ์ œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ ๋ถ€๋ชจ ํ•จ์ˆ˜์ธ ๋ฉ”์„œ๋“œ์—์„œ ์ž์‹ ํ•จโ€ฆ

October 03, 2021
java
language
๐Ÿงฉ [Algorithm] ๋ฌธ์ž์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ž์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ - KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜ KMP(Knuth-Morris-Pratt) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์˜ ์•ž ๋ถ€๋ถ„์€ ๋‹ค์‹œ ๋น„๊ตํ•˜์ง€ ์•Š๊ณ  ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๋ถ€ํ„ฐ ๋งค์นญ์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ๋ฌธ์ž์—ด ๋น„๊ต ํšŸ์ˆ˜๋ฅผ ๋Œ€ํญ ๊ฐ์†Œ์‹œํ‚จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒ€๊ฒŸ ๋ฌธ์ž์—ด์„ ๋Œ€์ƒ์œผ๋กœ ์„ ์ž‘์„ฑํ•˜์—ฌ ํƒ€๊ฒŸ ๋ฌธ์ž์—ด ๋‚ด๋ถ€์—์„œ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์Œ ํƒ€๊ฒŸ ๋ฌธ์ž์—ด์˜ 1๋ฒˆ ์ธ๋ฑ์Šค ๋ฌธ์ž๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ๋ฌธ์ž๊นŒ์ง€ ํ™•์ธํ•˜๋ฉฐ ๊ฐ ์ธ๋ฑ์Šค ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ถ€๋ถ„๋ฌธ์ž์—ด์˜ ์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ €์žฅ ๋ถ€๋ถ„ ์ผ์น˜ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๊ณผ ํƒ€๊ฒŸ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ด ๋งค์นญ์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ํƒ€๊ฒŸ ๋ฌธ์ž์—ด ํฌ์ธํ„ฐ๊ฐ€ ๋Œ์•„๊ฐˆ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ดโ€ฆ

September 23, 2021
algorithm
๐Ÿ“ก [Network] HTTP Vs HTTPS

HTTP์™€ HTTPS HTTP(Hyper Text Transfer Protocol) WWW(World-Wide-Web)๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—์„œ ์›น ์„œ๋ฒ„์™€ WWW ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €) ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฒˆ ํฌํŠธ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ(Request)ํ•˜๋ฉด ์›น ์„œ๋ฒ„๋Š” ๋ฒˆ ํฌํŠธ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์— ์‘๋‹ต(Response)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค. HTTP ์š”์ฒญ(Request) ๋ฉ”์‹œ์ง€์™€ ์‘๋‹ต(Response) ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ Start line, Headers, Body ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. Start line : Method ๋ฐฉ์‹, ํƒ€๊ฒŸ URL, HTTP ๋ฒ„์ „ ๋“ฑ์˜ โ€ฆ

September 19, 2021
network
๐Ÿงฉ [Algorithm] ํฌ์†Œ ๋ฐฐ์—ด(Sparse Table) ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํฌ์†Œ ๋ฐฐ์—ด(Sparse Table) ๋ฐฐ์—ด ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฌด์กฐ๊ฑด ๋ฐฐ์—ด์˜ length ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์€ ํฌ์†Œ ํ–‰๋ ฌ๊ณผ ๊ฐ™์ด, ํฌ์†Œ ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ์›์†Œ ์œ„์น˜๊ฐ€ ์—ฐ์†์ ์ด์ง€ ์•Š์€ ๋ฐฐ์—ด์„ ๋งํ•จ ์ด๋Ÿฌํ•œ ํฌ์†Œ๋ฐฐ์—ด์˜ ํŠน์ง•์„ ์ด์šฉํ•ด ๊ทธ๋ž˜ํ”„์˜ ์‚ฌ์ดํด์„ ํƒ์ƒ‰ํ•ด๋‚˜๊ฐ€๋Š” ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ํฌ์†Œ ๋ฐฐ์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์ดํด์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์กด์žฌํ•˜๊ณ , ํŠน์ • ์ •์ (v)์—์„œ ์‹œ์ž‘ํ•ด n๊ฐœ์˜ ๊ฐ„์„ ์„ ์ด๋™ํ•ด ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ ์„ ๊ตฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ๊ฐ„์„  1๊ฐœ๋ฅผ n๋ฒˆ์”ฉ ์ด๋™ํ•˜์—ฌ ๋„์ฐฉํ•˜๋Š” ์ •์ ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆด ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์œ„์˜ ๋ฌธ์ œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค๋ฉด? ๋ชจ๋“  v์ •์ ์— ๋Œ€ํ•ด n๊ฐœ์˜ โ€ฆ

September 13, 2021
algorithm
๐Ÿ—ƒ [DataBase] JOIN

JOIN ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ผ๋ฐ˜์ ์œผ๋กœ, ๋‘˜ ์ด์ƒ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ JOIN์„ ์‹œ๋„ํ•œ๋‹ค. Various Joins JOIN๊ณผ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž : ๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์„ธ๋กœ๋กœ ์—ฐ๊ฒฐํ•œ ๊ฒƒ JOIN : ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ๋กœ ์—ฐ๊ฒฐํ•œ ๊ฒƒ EQUI JOIN ๋‘ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์—ด์˜ ๊ฐ’๋“ค์ด ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•  ๋•Œ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• Default Join ๋ฐฉ๋ฒ• ์ผ๋ฐ˜์ ์œผ๋กœ PK, FK ๊ด€๊ณ„์— ์˜ํ•ด JOIN์„ ์‹œ๋„ํ•˜์ง€๋งŒ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ JOIN์„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ JOINํ•˜๋ ค๋Š” ๋‘๊ฐœ ์ด์ƒ ํ…Œ์ด๋ธ”์ด ๋™์ผํ•œโ€ฆ

September 10, 2021
database
๐Ÿ—ƒ [DataBase] ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ SQL ์ข…๋ฅ˜

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(RDBMS)์™€ SQL ์ข…๋ฅ˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(DataBase)๋ž€? ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ์ž์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๊ณ , ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•ด์•ผํ•˜๋ฉฐ, ๋™์‹œ์— ์ ‘๊ทผํ•˜์—ฌ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๊ด€๊ณ„ ํ‘œํ˜„์„ ์œ„ํ•ด ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์š”์†Œ ๊ฐœ์ฒด(Entity) : ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ , ๋ฌดํ˜•์˜ ๊ฐ์ฒด. ์„œ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ๊ฒƒ๋“ค. ๊ฐœ์ฒด๋Š” ๋‹จ๋…์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋กœ์„œ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. ex) ๊ณ ๊ฐ, ํ•™์ƒ, ๊ณผ๋ชฉ, ํ•™๊ณผ, ์‚ฌ์›, ๋ถ€์„œ ์†์„ฑ(Attribute) : ๊ฐœ์ฒด์˜ ํŠน์„ฑ์ด๋‚˜ ์ƒํƒœ. ๊ฐœ์ฒด๊ฐ€โ€ฆ

September 07, 2021
database
๐Ÿงฉ [Algorithm] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ(Segment Tree)

๊ตฌ๊ฐ„ ํŠธ๋ฆฌ(Segment Tree) ์ผ์ฐจ์› ๋ฐฐ์—ด์˜ ํŠน์ • ๊ตฌ๊ฐ„์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ๋น ๋ฅด๊ฒŒ ๋Œ€๋‹ตํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ตฌ๊ฐ„ ์›์†Œ๋“ค์˜ ํ•ฉ, ๊ตฌ๊ฐ„ ์›์†Œ๋“ค์˜ ์ตœ์†Ÿ๊ฐ’(RMQ, Range Minimum Query) ๋“ฑ์— ๋Œ€ํ•œ ์งˆ์˜๋ฅผ ์ง€์›ํ•œ๋‹ค. ๊ตฌ๊ฐ„ ํŠธ๋ฆฌ ์ดˆ๊ธฐํ™” ๋ฐฐ์—ด์˜ ๊ฐ ๊ตฌ๊ฐ„์„ ํ‘œํ˜„ํ•˜๋Š” ์ด์ง„ ํŠธ๋ฆฌ ํ˜•ํƒœ ๊ตฌ๊ฐ„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋Š” ๋ฐฐ์—ด์˜ ์ „์ฒด ๊ตฌ๊ฐ„()์„ ํ‘œํ˜„ ๊ฐ ํŠธ๋ฆฌ(i)์˜ ์™ผ์ชฝ ์ž์‹(2i)๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹(2i+1)์€ ํ•ด๋‹น ๊ตฌ๊ฐ„์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ ์™ผ์ชฝ ๋ถ€๋ถ„์™€ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์„ ํ‘œํ˜„ ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๊ตฌ๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ 1์ธ ๊ฒฝ์šฐ ์ „์ฒด ๊ตฌ๊ฐ„ ํฌ๊ธฐ๊ฐ€ 2์˜ ์ œ๊ณฑ๊ผด์ด๋ผ๋ฉด ๋…ธ๋“œ๊ฐ€ ๊ฐœ์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋˜๊ฒ ์ง€๋งŒ, 2์˜ ์ œ๊ณฑ๊ผด์ด ์•„๋‹ˆ๋”๋ผ๋„ ๋‚จ๋Š” ๋…ธ๋“œ๋Š” โ€ฆ

September 05, 2021
algorithm
๐Ÿงฉ [Algorithm] ํ€ต ์ •๋ ฌ(Quick Sort)๊ณผ ๋“€์–ผ ํ”ผ๋ด‡ ํ€ต ์ •๋ ฌ(Dual Pivot Quick Sort)

ํ€ต ์ •๋ ฌ(Quick Sort)๊ณผ ๋“€์–ผ ํ”ผ๋ด‡ ํ€ต ์ •๋ ฌ(Dual Pivot Quick Sort) ํ€ต ์ •๋ ฌ์˜ ๊ฐœ๋… ์ž„์˜์˜ ํ”ผ๋ด‡(pivot)์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ํ”ผ๋ด‡ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋Š” ํ”ผ๋ด‡์˜ ์™ผ์ชฝ์—, ํฐ ๋ฐ์ดํ„ฐ๋Š” ํ”ผ๋ด‡์˜ ์˜ค๋ฅธ์ชฝ์— ๋ฐฐ์น˜ํ•œ ๋’ค, ์™ผ์ชฝ ๋ถ€๋ถ„๊ณผ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ํ€ต ์ •๋ ฌ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ 2๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•œ ๋’ค, ๊ฐ๊ฐ์˜ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ํ€ต์ •๋ ฌํ•˜๋Š” ์ „ํ˜•์ ์ธ ์›๋ฆฌ ํ”ผ๋ด‡์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• ํ•˜๊ธฐ ํ€ต ์ •๋ ฌ ๊ตฌํ˜„์˜ ํ•ต์‹ฌ์€ ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ถ€๋ถ„์ธ ์ „์ฒด ๋ฐฐ์—ด์„ ํ”ผ๋ด‡์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ถ„ํ• ์˜ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฐฐ์—ด์˜ ์ž„์˜์˜ ์›์†Œ๋ฅผ , ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ , ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ด๋ผ๊ณ โ€ฆ

September 03, 2021
algorithm
๐ŸŒฒ [Algorithm] ํŠธ๋ผ์ด(Trie)

ํŠธ๋ผ์ด(Trie) ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ๊ฐ–๋Š” ์—ฐ๊ด€ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ ์ฃผ๋กœ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ(NLP) ๋ถ„์•ผ์—์„œ ๋ฌธ์ž์—ด ํƒ์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ฐ๊ฐ์˜ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ƒ‰์ธ์„ ๊ตฌ์ถ•ํ•œ ํ˜•ํƒœ์ด๋‹ค. ํŠธ๋ผ์ด ์›๋ฆฌ ํŠธ๋ผ์ด๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ž์—ด ์ €์žฅ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ €์žฅํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด์˜ ๋ชจ๋“  ๋ฌธ์ž๋“ค์„ ํ™•์ธํ•˜๋ฉฐ ์•„๋ž˜ ๊ณผ์ •์„ ์‹œํ–‰ํ•œ๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ(๋ฌธ์ž ๋ฐฐ์—ด)์—์„œ ๋ฌธ์ž์—ด์˜ ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•œ๋‹ค. ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋…ธ๋“œ(๋ฌธ์ž ๋ฐฐ์—ด)๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ์ดํ›„ ์ƒˆ๋กœ์šด ๋…ธ๋“œ์—์„œ ๋‘๋ฒˆ์งธ ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•œ๋‹ค. ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ๊ฐ€โ€ฆ

August 28, 2021
algorithm
๐Ÿงฉ [Algorithm] ๋ชจ๋“  ์Œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ(Floyd-Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชจ๋“  ์Œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ(Floyd-Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ๊ฐ€์ค‘์น˜(์–‘์˜ ๊ฐ€์ค‘์น˜, ์Œ์˜ ๊ฐ€์ค‘์น˜)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ํ’€ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ”Œ๋กœ์ด๋“œ ์›Œ์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ DP๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋”์šฑ ์‰ฝ๊ณ  ํšจ์œจ์ ์ด๊ฒŒ ํ•ด๊ฒฐํ•œ๋‹ค. ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ(Floyd-Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—์„œ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” i์—์„œ j๋กœ์˜ ์ง์ ‘ ๋น„์šฉ๊ณผ, i์™€ j๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ •์ ์„ ๊ฑฐ์น˜๋Š” ๊ฐ„์ ‘ ๋น„์šฉ์„ ๋น„๊ตํ•˜์—ฌ ๋น„์šฉ์ด ๋” ์ ์€ ๊ฐ’์ด ๋œ๋‹ค. ์ด๋•Œ, ๋ชจ๋“  ์Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”โ€ฆ

August 25, 2021
algorithm
๐Ÿงฉ [Algorithm] ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ž€? ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ๋‘ ์ •์  ์‚ฌ์ด ๊ฒฝ๋กœ๋“ค ์ค‘ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ๊ฒฝ๋กœ ํ•˜๋‚˜์˜ ์‹œ์ž‘ ์ •์ ์—์„œ ๋ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฒจ๋งŒ-ํฌ๋“œ(Bellman-Ford) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Œ ๋ชจ๋“  ์ •์ ๋“ค์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ํ”Œ๋กœ์ด๋“œ-์›Œ์ƒฌ(Floyd-Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Œ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰์œผ๋กœ๋Š” DFS, BFS ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ ์ค‘ ๋‘ ์ •์  ์‚ฌ์ด ๊ฒฝ๋กœ ์ค‘ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” BFS๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„์—์„œ โ€ฆ

August 24, 2021
algorithm
๐Ÿงฉ [Algorithm] ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST)์™€ Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜, Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST)์™€ Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜, Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Mimimum Spanning Tree) ์‹ ์žฅ ํŠธ๋ฆฌ : n๊ฐœ์˜ ์ •์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ n๊ฐœ์˜ ์ •์ ๊ณผ n-1๊ฐœ์˜ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํŠธ๋ฆฌ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ : ๋ฌดํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์—์„œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ„์„ ๋“ค์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ์‹ ์žฅ ํŠธ๋ฆฌ Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„์„ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ ๊ฐ„์„ ์„ ์šฐ์„ ์ ์œผ๋กœ ์„ ํƒํ•˜๋ฉฐ MST๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง ๐Ÿ‘‡ ์ตœ์ดˆ์— ๋ชจ๋“  ๊ฐ„์„ ์„ ๊ฐ€์ค‘์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์„ ํƒํ•ด๊ฐ€๋ฉฐ ํŠธ๋ฆฌ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.(์ด๋•Œ, ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋ฉด ๋‹ค์Œ์œผ๋กœ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์€ ๊ฐ„์„ ์„ ์„ ํƒํ•œโ€ฆ

August 22, 2021
algorithm
๐Ÿงฉ [Algorithm] ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint Set)๊ณผ Union-Find ์•Œ๊ณ ๋ฆฌ์ฆ˜

์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint Set)๊ณผ Union-Find ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint Set) ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(์ƒํ˜ธ๋ฐฐํƒ€ ์ง‘ํ•ฉ)์€ ์„œ๋กœ ์ค‘๋ณต๋˜์–ด ํฌํ•จ๋œ ์›์†Œ๊ฐ€ ์—†๋Š” ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•จ. ๋‹ค์‹œ ๋งํ•ด ๊ต์ง‘ํ•ฉ์ด ์—†๋Š” ์ง‘ํ•ฉ! ๋”ฐ๋ผ์„œ ์ง‘ํ•ฉ์— ์†ํ•œ ํ•˜๋‚˜์˜ ํŠน์ • ์›์†Œ๋ฅผ ํ†ตํ•ด ๊ฐ ์ง‘ํ•ฉ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด ์›์†Œ๋ฅผ ๋Œ€ํ‘œ์ž(representative)๋ผ๊ณ  ํ•จ. ์„œ๋กœ์†Œ๋ž€? ์ˆ˜ํ•™์—์„œ์˜ ์„œ๋กœ์†Œ๋Š” ์ •์ˆ˜๋‚˜ ๋‹คํ•ญ์‹ ๊ฐ„ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ 1์ธ ๊ด€๊ณ„๋ฅผ ๋งํ•จ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ฐ™์€ ์ง‘ํ•ฉ ์›์†Œ๋“ค์„ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ด€๋ฆฌ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ์•ž์— ์œ„์น˜ํ•œ ์›์†Œ๋ฅผ ๋Œ€ํ‘œ์ž๋กœ ์„ค์ • ๊ฐ ์›์†Œ๋Š” ์ง‘ํ•ฉ์˜ ๋Œ€ํ‘œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋งํฌ๋ฅผ ๊ฐ€์ง ํŠธ๋ฆฌ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์„ โ€ฆ

August 20, 2021
algorithm
๐Ÿ•ธ [Algorithm] ๊ทธ๋ž˜ํ”„(Graph)

๊ทธ๋ž˜ํ”„(Graph) ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํƒ์ƒ‰ ๊ทธ๋ž˜ํ”„(Graph) ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์›์†Œ๋“ค ๊ฐ„ ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ๋ฌผ ํ˜น์€ ์‚ฌ๋žŒ, ์ถ”์ƒ์  ๊ฐœ๋… ๋“ฑ์˜ ๊ด€๊ณ„์„ฑ์„ ํ‘œํ˜„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ •์ (vertex)๋“ค์˜ ์ง‘ํ•ฉ๊ณผ ์ด๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (Edge)๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ ์ฐจ์ˆ˜(Degree) : ์ •์ ์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์˜ ์ˆ˜ ๊ทธ๋ž˜ํ”„์˜ ์œ ํ˜• ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„(Undirected Graph) : ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์—†์–ด ์ •์  ๊ฐ„ ์—ฐ๊ฒฐ๊ด€๊ณ„๋งŒ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„ ์œ ํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Graph) : ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์žˆ์–ด ์ถœ๋ฐœ ์ •์ ๊ณผ ๋„์ฐฉ ์ •์ ์„ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„(Weighted Graph) : ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ๋ถ€์—ฌ๋˜์–ด ํŠน์ • ์ •์  ๊ฐ„ ๊ฑฐ๋ฆฌ, ์ดโ€ฆ

August 15, 2021
algorithm
๐ŸŒณ [Algorithm] ํŠธ๋ฆฌ(Tree)

ํŠธ๋ฆฌ(Tree) ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Tree) ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์›์†Œ๋“ค ๊ฐ„ ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์›์†Œ๋“ค ๊ฐ„ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ๊ณ„์ธตํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์ƒ์œ„ ์›์†Œ์—์„œ ํ•˜์œ„ ์›์†Œ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉฐ ํ™•์žฅ๋˜๋Š” ํŠธ๋ฆฌ(๋‚˜๋ฌด) ๋ชจ์–‘์˜ ๊ตฌ์กฐ ํšŒ์‚ฌ์˜ ์กฐ์ง๋„, ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ, ๊ธฐ๊ณ„ ํ•™์Šต์—์„œ์˜ ๊ฒฐ์ • ํŠธ๋ฆฌ(decision tree) ๋“ฑ์„ ํ‘œํ˜„ ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด ์ •๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ ๋…ธ๋“œ(Node) : ํŠธ๋ฆฌ์˜ ์›์†Œ ๋ฃจํŠธ ๋…ธ๋“œ(root node) : ํŠธ๋ฆฌ์˜ ์‹œ์ž‘ ๋…ธ๋“œ์ธ ์ตœ์ƒ์œ„ ๋…ธ๋“œ ๋ฆฌํ”„ ๋…ธ๋“œ(leaf node) : ์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ, ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ ํ˜•์ œ ๋…ธ๋“œ(sibling node) : ๊ฐ™์€ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ์ž์‹ ๋…ธ๋“œ๋“ค ์กฐ์ƒ ๋…ธ๋“œโ€ฆ

August 14, 2021
algorithm
๐Ÿงฉ [Algorithm] Bit Masking(๋น„ํŠธ ๋งˆ์Šคํ‚น) ์ˆœ์—ด, ๋ถ€๋ถ„์ง‘ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Bit Masking ๋น„ํŠธ ๋งˆ์Šคํ‚น ๋น„ํŠธ ์—ฐ์‚ฐ์ž์™€ ๋น„ํŠธ์—ด์„ ์ด์šฉํ•ด ์ž๋ฆฌ์ˆ˜, ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค ์ˆœ์—ด๊ณผ ๋ถ€๋ถ„์ง‘ํ•ฉ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ๋น„ํŠธ ์—ฐ์‚ฐ์ž << ์—ฐ์‚ฐ์ž : ๋น„ํŠธ๋กœ ํ‘œํ˜„๋œ ์ˆ˜์ธ N์˜ ๋น„ํŠธ์—ด์„ ์™ผ์ชฝ์œผ๋กœ R์นธ๋งŒํผ ์ด๋™ & ์—ฐ์‚ฐ์ž : ๋น„ํŠธ๋กœ ํ‘œํ˜„๋œ ์ˆ˜์ธ V1 ๊ณผ V2์˜ ๋น„ํŠธ์—ด์„ ๊ฐ๊ฐ ๋น„๊ตํ•˜์—ฌ ๋‘ ์ˆ˜์— ํ‘œํ˜„๋œ ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0 | ์—ฐ์‚ฐ์ž : ๋น„ํŠธ๋กœ ํ‘œํ˜„๋œ ์ˆ˜์ธ V1 ๊ณผ V2์˜ ๋น„ํŠธ์—ด์„ ๊ฐ๊ฐ ๋น„๊ตํ•˜์—ฌ ๋‘ ์ˆ˜์— ํ‘œํ˜„๋œ ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 0์ด๋ฉด 0, ์•„๋‹ˆ๋ฉด 1 << ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์ž๋ฆฌ๋กœ ์›์†Œ์˜ ์ž๋ฆฌ๋ฅผ ์ด๋™์‹œ์ผœ ์ž๋ฆฌ์ˆ˜, ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ๋งˆํ‚น์ฒ˜๋ฆฌํ•˜๋Š” ์šฉ๋„๋กค ์‚ฌ์šฉ ๊ฐ€๋Šฅ & ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ์›์†Œ๊ฐ€ ํ•ด๋‹นโ€ฆ

August 13, 2021
algorithm
๐Ÿงฉ [Algorithm] Next Permutation(๋‹ค์Œ ์ˆœ์—ด) ์•Œ๊ณ ๋ฆฌ์ฆ˜

Next Permutation ๋‹ค์Œ ์ˆœ์—ด ํ˜„ ์ˆœ์—ด์—์„œ ์‚ฌ์ „์ˆœ์œผ๋กœ ๋‹ค์Œ์— ์˜ฌ ์ˆœ์—ด์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ๋ฐฐ์—ด์˜ ๋งจ ๋’ค ์›์†Œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์—ฌ ์ตœ์ดˆ๋กœ ๊ฐ’์ด ์ž‘์•„์ง€๋Š” ์ˆœ๊ฐ„์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ( : ๊ผญ๋Œ€๊ธฐ, i ์ดํ›„๋กœ ์ตœ์ดˆ๋กœ ๊ฐ’์ด ์ž‘์•„์ง€๋Š” ์ธ๋ฑ์Šค๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ์„ ์ •) ๋ฐฐ์—ด์˜ ๋งจ ๋’ค ์›์†Œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์—ฌ ํƒ€๊ฒŸ ์›์†Œ์ธ ์ดํ›„ ์›์†Œ๋“ค ์ค‘, ํƒ€๊ฒŸ ์›์†Œ๋ณด๋‹ค ํฌ๋˜ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ()๋ฅผ ์ฐพ๊ธฐ ์ธ๋ฑ์Šค ์›์†Œ์™€ ์ธ๋ฑ์Šค ์›์†Œ๋ฅผ ๊ตํ™˜ ํƒ€๊ฒŸ ์›์†Œ ์ดํ›„ ๊ผญ๋Œ€๊ธฐ์ธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์›์†Œ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ Next Permutation์„ ์ด์šฉํ•œ ์ˆœ์—ด ๊ตฌํ˜„ ์‘์šฉ - Next Permutation์„ ์ด์šฉํ•œ ์กฐํ•ฉ ๊ตฌํ˜„ Next Pโ€ฆ

August 12, 2021
algorithm
โ˜•๏ธ [JAVA] Comparable๊ณผ Comparator ์ธํ„ฐํŽ˜์ด์Šค

๊ฐ์ฒด ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด ์ •๋ ฌํ•˜๊ธฐ - Comparable๊ณผ Comparator ์ธํ„ฐํŽ˜์ด์Šค Primitive Type(๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…) : ๋” ์ด์ƒ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์—†๋Š” ์›์ž์„ฑ์˜ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๊ทธ ์ž์ฒด๋กœ ํฌ๊ณ  ์ž‘์Œ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Œ Reference Type(์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…) : ๋Œ€์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณตํ•ฉ์ฒด๋กœ ํฌ๊ณ  ์ž‘์Œ์„ ๋น„๊ตํ•˜๊ธฐ ์–ด๋ ค์›€ ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋ฅผ ๋น„๊ต ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•จ! Comparable ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ๋น„๊ต ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜ () Comparable ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ๊ฐ์ฒด์— ๋งž๊ฒŒ ๊ตฌํ˜„ํ•œ ๋’ค ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ •๋ ฌ compareTo() comparโ€ฆ

August 11, 2021
java
language
๐Ÿงฉ [Algorithm] ์ˆœ์—ด, ์กฐํ•ฉ, ๋ถ€๋ถ„์ง‘ํ•ฉ

์™„์ „ ํƒ์ƒ‰์˜ ์‚ผ์ด์‚ฌ - ์ˆœ์—ด, ์กฐํ•ฉ, ๋ถ€๋ถ„์ง‘ํ•ฉ ์™„์ „ํƒ์ƒ‰ ๋ฌธ์ œ์˜ ํ•ด๋ฒ•์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ํ™•์ธ Brute-Force / Generate & Test ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ž‘์„ ๋•Œ ์œ ์šฉ ์ˆ˜ํ–‰ ์†๋„๋Š” ๋А๋ฆฌ์ง€๋งŒ, ํ•ด๋‹ต ์ฐพ๊ธฐ๋ฅผ ์‹คํŒจํ•  ํ™•๋ฅ ์ด ๋‚ฎ์Œ ์ˆœ์—ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ๋“ค ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ˆœ์„œ๊ฐ€ ์žˆ๊ฒŒ ๋‚˜์—ด TSP(Traveling Salesman Problem) ๋“ฑ ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ์ˆœ์—ด์˜ ์žฌ๊ท€์  ๊ตฌํ˜„ ์ค‘๋ณต ์ˆœ์—ด์˜ ์žฌ๊ท€์  ๊ตฌํ˜„ ์กฐํ•ฉ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ๋“ค ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ๋‹จ์ˆœํžˆ ๋ฝ‘๊ธฐ ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ์กฐํ•ฉ์˜ ์žฌ๊ท€์  ๊ตฌํ˜„ ์ค‘๋ณต ์กฐํ•ฉ์˜ ์žฌ๊ท€์  ๊ตฌํ˜„ ๋ถ€๋ถ„ ์ง‘ํ•ฉ ์ง‘ํ•ฉ์— ํฌํ•จ๋œ ์›์†Œ๋“ค์„ ์„ ํƒ ์ง‘ํ•ฉ ์›์†Œ๊ฐ€ n๊ฐœ์ผ ๋•Œ ๊ณต์ง‘ํ•ฉ์„ ํฌํ•จํ•œ ๋ถ€๋ถ„์ง‘ํ•ฉโ€ฆ

August 06, 2021
algorithm
โ›“ [git] Git ์‹œ์ž‘ํ•˜๊ธฐ(2) - fork, clone, checkout, pull

Git์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ ๊ณต๋™ ์ž‘์—…๊ณผ Contribute(fork) Git์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ด์šฉ์ž์™€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๊ฐœ๋ฐœ๋„ ํ•จ๊ป˜ํ•ด๋ด์•ผ ํ•˜์ง€ ์•Š๊ฒ ๋Š”๊ฐ€?! ์—ฌ๋Ÿฌ๋ช…์˜ ์ด์šฉ์ž์™€ ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Collaborator ํ˜น์€ Contributor๋กœ ํ™œ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต๋™ ์ž‘์—… - Collaborator Git ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ Collaborator ๊ถŒํ•œ์„ ์ค€๋‹ค๋ฉด ์ด ๋™๋ฃŒ๋Š” ์ €์žฅ์†Œ์— commit๊ณผ push๋ฅผ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์—…์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ์ด์šฉ์ž๋Š” ํ•˜๋‚˜์˜ ์›๊ฒฉ์ €์žฅ์†Œ์—์„œ ๊ณต๋™ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ถŒํ•œ์—๋Š” ์ฑ…์ž„์ด ๋”ฐ๋ฅด๋“ฏ์ด, ๋‹ค๋ฅธ ๋™๋ฃŒ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜โ€ฆ

August 02, 2021
git
๐Ÿ…ฑ๏ธ [๋ฐฑ์ค€] 1790 - ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ2

๋ฐฑ์ค€ 1790 - ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ2 ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… Baekjoon Online Judge - 1790๋ฒˆ ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ2 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์ด์–ด์„œ ์“ฐ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒˆ๋กœ์šด ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 1234567891011121314151617181920212223โ€ฆ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ์ˆ˜์—์„œ, ์•ž์—์„œ k๋ฒˆ์งธ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์–ด๋–ค ์ˆซ์ž์ธ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— N(1 โ‰ค N โ‰ค 100,000,000)๊ณผ, k(1 โ‰ค k โ‰ค 1,000,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ k ์‚ฌ์ด์—๋Š” ๊ณต๋ฐฑ์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋‹ค. ์ถœ๋ ฅ ์ฒซ์งธ ์ค„์— ์•ž์—์„œ k๋ฒˆ์งธ ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ˆ˜์˜ ๊ธธ์ด๊ฐ€ k๋ณด๋‹ค ์ž‘์•„์„œ k๋ฒˆ์งธโ€ฆ

July 30, 2021
ps
baekjoon
๐Ÿ…ฟ๏ธ [2018 KAKAO BLIND RECRUITMENT] ํ”„๋ Œ์ฆˆ4๋ธ”๋ก

2018 KAKAO BLIND RECRUITMENT ํ”„๋ Œ์ฆˆ4๋ธ”๋ก ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… ๋ธ”๋ผ์ธ๋“œ ๊ณต์ฑ„๋ฅผ ํ†ต๊ณผํ•œ ์‹ ์ž… ์‚ฌ์› ๋ผ์ด์–ธ์€ ์‹ ๊ทœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถœ์‹œํ•  ๊ฒŒ์ž„ ์ œ๋ชฉ์€ โ€œํ”„๋ Œ์ฆˆ4๋ธ”๋กโ€. ๊ฐ™์€ ๋ชจ์–‘์˜ ์นด์นด์˜คํ”„๋ Œ์ฆˆ ๋ธ”๋ก์ด 2ร—2 ํ˜•ํƒœ๋กœ 4๊ฐœ๊ฐ€ ๋ถ™์–ด์žˆ์„ ๊ฒฝ์šฐ ์‚ฌ๋ผ์ง€๋ฉด์„œ ์ ์ˆ˜๋ฅผ ์–ป๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๋งŒ์•ฝ ํŒ์ด ์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, ๋ผ์ด์–ธ์ด 2ร—2๋กœ ๋ฐฐ์น˜๋œ 7๊ฐœ ๋ธ”๋ก๊ณผ ์ฝ˜์ด 2ร—2๋กœ ๋ฐฐ์น˜๋œ 4๊ฐœ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค. ๊ฐ™์€ ๋ธ”๋ก์€ ์—ฌ๋Ÿฌ 2ร—2์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง€์›Œ์ง€๋Š” ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” 2ร—2 ๋ชจ์–‘์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ํ•œ๊บผ๋ฒˆ์— ์ง€์›Œ์ง„๋‹ค. ๋ธ”๋ก์ด ์ง€์›Œ์ง„ ํ›„์— ์œ„์— ์žˆ๋Š” ๋ธ”๋ก์ด ์•„๋ž˜๋กœ ๋–จ์–ด์ ธ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ฒŒ ๋œโ€ฆ

July 26, 2021
ps
programmers
โ˜•๏ธ [JAVA] ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

์ž๋ฐ” ๋‚œ์ˆ˜ ์ƒ์„ฑ 1) Math.random() ๋ฐฉ๋ฒ• 1 - Math ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ(static method)์ธ random() ์ด์šฉํ•˜๊ธฐ : 0.0 <= ? < 1.0 : 0.0 <= ? < N.0 : 0 <= ? <= N-1 : 1 <= ? <= N 2) Random ๋ฐฉ๋ฒ• 2 - Random ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Random ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์ด์šฉํ•˜๊ธฐ : 0 <= ? < N : 1 <= ? <= N ์ž๋ฐ” ๋‚œ์ˆ˜ ์ƒ์„ฑ 1) Math.random() 2) Random

July 25, 2021
java
language
โ˜•๏ธ [JAVA] ๋™์  ๋ฐ”์ธ๋”ฉ(Dynamic Binding)๊ณผ ์ •์  ๋ฐ”์ธ๋”ฉ(Static Binding)

์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ - ๋™์  ๋ฐ”์ธ๋”ฉ๊ณผ ์ •์  ๋ฐ”์ธ๋”ฉ ๋™์  ๋ฐ”์ธ๋”ฉ๊ณผ ์ •์  ๋ฐ”์ธ๋”ฉ ์ •์  ๋ฐ”์ธ๋”ฉ(Static Binding) ์ปดํŒŒ์ผํƒ€์ž„(Compile Time)์— ์„ ์–ธ๋œ ๊ฐ์ฒด์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ํ˜ธ์ถœ๋  ๋ฉ”์„œ๋“œ๋ฅผ ์ธ์‹ ์ž๋ฐ”์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์ •์  ๋ฐ”์ธ๋”ฉ์ด ์ ์šฉ๋˜๋ฏ€๋กœ ๋‹คํ˜•์„ฑ ํŠน์ง•์„ ์ด์šฉํ•˜์ง€ ๋ชปํ•จ. ์„ ์–ธ๋œ ํƒ€์ž…์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ ‘๊ทผ ์ž๋ฐ”์˜ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ(static method) ์—ญ์‹œ ์ •์  ๋ฐ”์ธ๋”ฉ์ด ์ ์šฉ๋˜๋ฏ€๋กœ ๋‹คํ˜•์„ฑ ํŠน์ง•์„ ์ด์šฉํ•˜์ง€ ๋ชปํ•จ. ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ์ž์‹์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค์— ๋ณ„๊ฐœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ ๋™์  ๋ฐ”์ธ๋”ฉ(Dynamic Binding) ๋Ÿฐํƒ€์ž„(Run Time)์— ์‹ค์ œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด ํƒ€์ž…์— ๋”ฐ๋ผ ํ˜ธ์ถœ๋  ๋ฉ”์„œ๋“œ๋ฅผ โ€ฆ

July 23, 2021
java
language
โ˜•๏ธ [JAVA] ๋‹คํ˜•์„ฑ(Polymorphism)

๋‹คํ˜•์„ฑ ์ •์˜ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ˜•(ํƒ€์ž…)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠน์ง• ์ƒ์†์„ ์ „์ œ๋กœ ํ•จ ์ƒ์† ๊ด€๊ณ„์— ์žˆ์„๋•Œ ๋ถ€๋ชจ์˜ ํƒ€์ž…์œผ๋กœ ์ž์‹ ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ(๋ ˆํผ๋Ÿฐ์Šค)ํ•  ์ˆ˜ ์žˆ์Œ ๋ฉ”์„œ๋“œ ๋‹ค์ค‘ ์ •์˜(์˜ค๋ฒ„๋กœ๋”ฉ), ๋ฉ”์„œ๋“œ ์žฌ์ •์˜(์˜ค๋ฒ„๋ผ์ด๋”ฉ)์€ ์ž๋ฐ”์˜ ๋‹คํ˜•์„ฑ ํŠน์ง•์œผ๋กœ ๊ฐ€๋Šฅํ•จ. ํ™œ์šฉ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฌถ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌ Object๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๋ถ€๋ชจ์ด๋ฏ€๋กœ Object ๋ฐฐ์—ด์€ ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ์ฒด๋„ ๋‹ค ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์›์น™์ ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Auto-Boxing์„ ์ด์šฉํ•ด Wrapper ํด๋ž˜์Šค๋กœ ๋ฐ”๊พธ๋ฉด ๊ฐ€๋Šฅํ•จ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๋‹คํ˜•์„ฑ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ ๋ณ€โ€ฆ

July 22, 2021
java
language
โ›“ [git] Git ์‹œ์ž‘ํ•˜๊ธฐ(1) - init, add, commit, push

Git ์‹œ์ž‘ํ•˜๊ธฐ Git์ด๋ž€? ํ˜•์ƒ ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด ์†Œ์Šค ๊ด€๋ฆฌ, ๋ฒ„์ „ ๊ด€๋ฆฌ, ๊ฐœ๋ฐœ์ž ๊ฐ„ ํ”„๋กœ๊ทธ๋žจ ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ Git ์ €์žฅ์†Œ Local Repository ์‚ฌ์šฉ์ž PC์˜ ์ž‘์—… ๊ณต๊ฐ„ ๋ช…๋ น์–ด ์ž…๋ ฅ ์‹œ local PC์—๋Š” 3๊ฐœ์˜ ์˜์—ญ์ด ์ƒ์„ฑ๋จ Working : ํŒŒ์ผ, ํด๋”๊ฐ€ ์กด์žฌํ•˜๋Š” ์ž‘์—…์˜์—ญ. ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ํŒŒ์ผ, ๊ธฐ์กด์— ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ๋ฐ›๋˜ ํŒŒ์ผ์ด ์ˆ˜์ •๋œ ๊ฒฝ์šฐ working ์˜์—ญ์— ์กด์žฌ. Staging : ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ด๊ณ ์žˆ๋Š” ์ž„์‹œ ์˜์—ญ. ํœ˜๋ฐœ์„ฑ ๊ณต๊ฐ„. Local Repository : ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๊ณ  ๊ธฐ๋กํ•œ ์ €์žฅ ์˜์—ญ. ์ €์žฅ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด๊ด€๋จ. Working ์˜์—ญ์€ unstageโ€ฆ

July 20, 2021
git
โ˜•๏ธ [JAVA] Java Garbage Collection

Garbage Collection(GC) ๋”์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ •๋ฆฌํ•ด์ฃผ๋Š” JVM์˜ ๊ธฐ๋Šฅ JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ Heap ์˜์—ญ์—์„œ์˜ GC JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ JVM์ด ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•จ. Heap ์˜์—ญ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” GC GC๋Š” Heap์˜ ๊ฐ์ฒด ์ค‘ ํ•„์š”ํ•œ ๊ฒƒ, ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋”ฐ๋กœ ๋ชจ์•„๋‘๊ณ  ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” Eden ์˜์—ญ์— ์กด์žฌ Eden ์˜์—ญ์˜ ๊ฐ์ฒด ์ค‘ ์‚ด์•„๋‚จ์€, ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋Š” Survivor1๋กœ ์ด๋™ Survivor1 ์˜์—ญ์˜ ๊ฐ์ฒด ์ค‘ ์‚ด์•„๋‚จ์€, ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋Š” Survivor2๋กœ ์ด๋™ Survivor1๊ณผ Survivor2 ์˜์—ญ์€ ์„œ๋กœ ๋ฒˆโ€ฆ

July 19, 2021
java
language
โ˜•๏ธ [JAVA] java.util ํŒจํ‚ค์ง€

java.util ํŒจํ‚ค์ง€์™€ utility ํด๋ž˜์Šค Date ํด๋ž˜์Šค ํ˜•์‹์ด ์žˆ๋Š” ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•˜๋Š” ํด๋ž˜์Šค Date ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ฒดํฌ Calendar ํด๋ž˜์Šค Date ํด๋ž˜์Šค์™€ ๊ฐ™์ด ๋‚ ์งœ์™€ ์‹œ๊ฐ„์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ. ๋‹จ, Calendar ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์ด๋ฏ€๋กœ ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑ ๋ถˆ๊ฐ€ -> ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ ๊ฐ€๋Šฅ Calendar ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ Formatter ํด๋ž˜์Šค ํ˜•์‹ ๋ฌธ์ž์—ด์„ ์ œ๊ณตํ•˜๊ณ , ์ด ๋ฌธ์ž์—ด์—์„œ ์ง€์ •ํ•œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜•์‹ํ™”๋˜์–ด ์ถœ๋ ฅ๋จ(C์–ธ์–ด์˜ ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ œ๊ณต) Formatter ํด๋ž˜์Šค์˜ format๋“ค ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ format format ์„ค๋ช… %B, %bโ€ฆ

July 19, 2021
java
language
๐Ÿ’†๐Ÿป [Blog] ์ œ๋ชฉ์€ ๊ณ ์ •๋œ ํ—ค๋”๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ ์ด์ œ ์Šคํฌ๋กค๊ณผ ์ปจํ…์ธ  ๊ฐ€๋ ค์ง์„ ๊ณ๋“ค์ธ

๊ณ ์ •๋œ ํ—ค๋”์™€ ์ปจํ…์ธ  ๊ฐ€๋ ค์ง ํ•ด๊ฒฐ zoomkoding๋‹˜์ด ๋ฐฐํฌํ•ด์ฃผ์‹  ๊ฐœ์ธ ๋น„ ๋ธ”๋กœ๊ทธ ํ…Œ๋งˆ๋ฅผ ์กฐ๊ธˆ์”ฉ ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊น”๋”ํ•œ ์›๋ณธ ํ…Œ๋งˆ ๋•๋ถ„์— ๋”ฐ๋กœ ์†์ด ๊ฐˆ ์ผ์€ ๋ณ„๋กœ ์—†์ง€๋งŒ ๊ทธ๋ž˜๋„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ๋ถ€๋ถ„์ด ๋ณด์—ฌ ์ง์ ‘ ๋ฆฌ๋ชจ๋ธ๋ง์„ ํ•œ๋‹ค. ๋ธ”๋กœ๊ทธ ์ปค์Šคํ…€์˜ ๋งŽ์€ ๋ถ€๋ถ„์€ devhac ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‹ค. hakyung๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!! ์ด๋ฒˆ์— ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„์€ ํ—ค๋”๋ถ€๋ถ„์ด๋‹ค. ์Šคํฌ๋กค์„ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๊ธ€์„ ์ฝ๋‹ค๋ณด๋ฉด ๋น ๋ฅด๊ฒŒ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๊ฑฐ๋‚˜ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฉ”๋‰ด๋ฐ”๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์–ด ์›๋ž˜๋Š” Top ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Top ๋ฒ„ํŠผ๋ณด๋‹ค๋Š” ์ƒ๋‹จ์— ๊ณ ์ •๋˜์–ด ์–ธ์ œ๋“ ์ง€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ—ค๋”๊ฐ€ ๋” ์‹ค์šฉ์ ์ผ ๊ฒƒ ๊ฐ™์•„โ€ฆ

July 17, 2021
blog
react
css
โ˜•๏ธ [JAVA] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์ž๋ฐ”์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋‹ค์ค‘ try-catch ๋ธ”๋ก๊ณผ finally ๋ธ”๋ก throws ์˜ˆ์•ฝ์–ด๋ฅผ ์ด์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ž๋ฐ”์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋‹ค์ค‘ try-catch ๋ธ”๋ก๊ณผ finally ๋ธ”๋ก throws ์˜ˆ์•ฝ์–ด๋ฅผ ์ด์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

July 08, 2021
java
language
โ˜•๏ธ [JAVA] ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค

์ž๋ฐ”์˜ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ƒ ํด๋ž˜์Šค ์ถ”์ƒ ๋ฉ”์„œ๋“œ ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ํ˜•ํƒœ๋งŒ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ฐ˜๋“œ์‹œ ์žฌ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๊ธฐ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์—์„œ์˜ ๊ตฌํ˜„์ด ๋ฌด์˜๋ฏธํ•œ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„๋ถ€๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋ถ€(๋ฆฌํ„ดํƒ€์ž…, ๋งค์„œ๋“œ๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜)๋งŒ ๋‚จ๊ธฐ๊ณ  ๊ตฌํ˜„๋ถ€({})๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;)์œผ๋กœ ๋Œ€์ฒดํ•œ ํ˜•ํƒœ ์ถ”์ƒ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜(๋ฆฌํ„ดํƒ€์ž…, ๋งค์„œ๋“œ๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜)๋งŒ์„ ์ •์˜ํ•˜๊ณ  ๋ธ”๋Ÿญ({}) ๋‚ด๋ถ€์˜ ๊ธฐ๋Šฅ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ƒ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์„ค๊ณ„์ƒ ์˜๋„์ ์œผ๋กœ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ํด๋ž˜์Šค ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ง์ ‘โ€ฆ

July 08, 2021
java
language
โ˜•๏ธ [JAVA] ์ž๋ฐ” ๊ฐ์ฒด์˜ ๊ด€๊ณ„์„ฑ๊ณผ Annotation

๊ฐ์ฒด์˜ ๊ด€๊ณ„์„ฑ๊ณผ ์ฃผ์„(Annotation) ์ž๋ฐ” ํด๋ž˜์Šค ๋ฐ ๊ฐ์ฒด ๊ด€๊ณ„์„ฑ ์ƒ์† ๊ด€๊ณ„ is a ๊ด€๊ณ„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ผ๋ฐ˜ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ์ƒ์† ๊ฐ€๋Šฅ ํฌํ•จ ๊ด€๊ณ„ has a ๊ด€๊ณ„ ๊ฐ์ฒด๋ฅผ ์†Œ์œ ํ•˜๋Š” ๊ฐœ๋… ๋‹จ์ผ ์ƒ์†์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณต 2๊ฐœ ์ด์ƒ์˜ ํด๋ž˜์Šค์—์„œ ํŠน์ง•์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ์ƒ์†์„ ๋ฐ›๊ณ , ๋‚˜๋จธ์ง€ ํด๋ž˜์Šค๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ(๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ™œ์šฉ)ํ•  ์ˆ˜ ์žˆ์Œ ์‚ฌ์šฉ ๊ด€๊ณ„ use a ๊ด€๊ณ„ ์ผ์‹œ์ ์œผ๋กœ ์˜์กดํ•ด์•ผํ•˜๋Š” ๊ด€๊ณ„ ์‚ฌ์šฉํ•ด์•ผํ•  ๊ฐ์ฒด๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•จ ์ฃผ์„(Annotation) ์ปดํŒŒ์ผ๋Ÿฌ, JVM, ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฃผ์„ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋œ ์ฃผ์„ @Deprecated ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ค๋ž˜๋˜์–ดโ€ฆ

July 08, 2021
java
language
โ˜•๏ธ [JAVA] this์™€ super ์˜ˆ์•ฝ์–ด

this์™€ super this ์˜ˆ์•ฝ์–ด non-static ์˜์—ญ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ˆ์•ฝ์–ด๋กœ, ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๊ฐ์ฒด๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ์”€ this. ์ง€์—ญ ๋ณ€์ˆ˜(๋งค๊ฐœ ๋ณ€์ˆ˜ ๋“ฑ)์™€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜(์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜)๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ์ฒด ์ž์‹ ์ธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชฉ์  ์ž๊ธฐ ์ž์‹ ์˜ ๊ฐ์ฒด๋ฅผ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ return ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ํ˜„์žฌ ํด๋ž˜์Šค์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ฐพ์Œ this() ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ ์ž์‹ ์˜ ๋˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž(์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์ƒ์„ฑ์ž)๋ฅผ ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ ์ž์‹ ์˜ ๋˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž(์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์ƒ์„ฑ์ž)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชฉ์  ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋‹ค๋ฉด ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ƒ์„ฑ์ž ๋‚ด์—์„œ ๊ฐ€์žฅ ์ƒ์œ„โ€ฆ

July 07, 2021
java
language
โ˜•๏ธ [JAVA] ๋ฉ”์„œ๋“œ Overloading๊ณผ ๋ฉ”์„œ๋“œ Overriding

๋ฉ”์„œ๋“œ Overloading๊ณผ ๋ฉ”์„œ๋“œ Overriding ๋ฉ”์„œ๋“œ Overloading ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ค‘๋ณต ์ •์˜๋˜๋Š” ๊ฒƒ(๋‹จ, ๋ณ€์ˆ˜์˜ ์ค‘๋ณต ์ •์˜๋Š” ๋ถˆ๊ฐ€๋Šฅ) ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ํƒ€์ž… ํ˜น์€ ์ˆœ์„œ๋งŒ ๋‹ค๋ฅด๋‹ค๋ฉด ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ผ๋„ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐœ๋… ๋ฉ”์„œ๋“œ Overloading ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ํƒ€์ž…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ O ๋ฆฌํ„ด ํƒ€์ž…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ X ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ X ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ํƒ€์ž…์ด ๊ฐ™์ง€๋งŒ, ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ O ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ˜•๋ณ€ํ™˜๋œ ๋‹ค๋ฅธ ํƒ€์ž…์ธ ๊ฒฝ์šฐ O ์ƒ์„ฑ์ž Overloading ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋งŒ ์ ์ ˆํžˆ ์กฐํ•ฉํ•˜์—ฌโ€ฆ

July 07, 2021
java
language
โ˜•๏ธ [JAVA] ์ƒ์†(Inheritance)

์ž๋ฐ”์˜ ์ƒ์† ์ƒ์† ๊ธฐ์กด ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ๋ง๋ถ™์ด๊ฑฐ๋‚˜(ํ™•์žฅ), ๋‚ด์šฉ์˜ ์ผ๋ถ€๋ฅผ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉ(์žฌ์ •์˜, ์˜ค๋ฒ„๋ผ์ด๋”ฉ)ํ•˜๋Š” ๊ฒƒ ์žฅ๋‹จ์  ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ, ํ™•์žฅ์˜ ์šฉ์ดํ•จ, ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋ฐ ๋น„์šฉ ๊ฐ์ถ• ํšจ๊ณผ ๊ทธ๋Ÿฌ๋‚˜ ๊ณผ๋„ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์  ์กด์žฌ ์กฐ๊ฑด๊ณผ ํŠน์ง• ๋…ผ๋ฆฌ์ ์œผ๋กœ โ€œ์ž์‹ is a ๋ถ€๋ชจโ€ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•  ๋•Œ๋งŒ ์ƒ์† ๊ฐ€๋Šฅ ์ž๋ฐ”์—์„œ๋Š” ์ค‘๋ณต๋œ ๋ณ€์ˆ˜๋ช… ์‚ฌ์šฉ์„ ๋ง‰๋Š” ๋“ฑ ๊ฐœ๋ฐœ์˜ ํŽธ์˜์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋ฌธ๋ฒ•์ ์œผ๋กœ ๋‹จ์ผ์ƒ์†๋งŒ์„ ํ—ˆ์šฉํ•จ(์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด โ€˜์ธํ„ฐํŽ˜์ด์Šคโ€™์™€ โ€˜has aโ€™๊ด€๊ณ„ ํ™œ์šฉ ๊ฐ€๋Šฅ) ๋ณ„๋„๋กœ ์„ ์–ธ ์—†๋Š” ํด๋ž˜์Šค๋Š” ๋ชจ๋‘ ๊ฐ€ ์ƒ๋žต๋จ. ์ฆ‰, ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ์Œ. ์ƒ์†๊ณผ ์ƒ์„ฑ์ž ์ƒ์†โ€ฆ

July 07, 2021
java
language
โ˜•๏ธ [JAVA] ์ž๋ฐ” Modifier

Modifier ์ž๋ฐ”์˜ Modifier static ์˜ˆ์•ฝ์–ด ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๊ฐ ๊ฐ์ฒด์˜ ๋ณ€์ˆ˜๋“ค์ด ์ƒ์„ฑ๋จ ํ•œ ๊ฐ์ฒด์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ ๊ฐ์ฒด๋ณ„๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ ํด๋ž˜์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•จ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ , ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ์ตœ์ดˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ํ• ๋‹น๋จ ๋ฅผ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๊ฐ€ ํด๋ž˜์Šค ๋ณ€์ˆ˜์— ํ•ด๋‹น๋จ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํด๋ž˜์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ํด๋ž˜์Šค ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ static ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํ˜ธโ€ฆ

July 07, 2021
java
language
โ˜•๏ธ [JAVA] ํด๋ž˜์Šค ์ž‘์„ฑ

ํด๋ž˜์Šค์˜ ์ž‘์„ฑ (1) ํŒจํ‚ค์ง€ ์„ ์–ธ๋ฌธ 0๊ฐœ ๋˜๋Š” 1๊ฐœ ์กด์žฌ(ํ•œ ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์— ์†ํ•  ์ˆ˜ ์—†์Œ) ์œ ์ผํ•œ ํŒจํ‚ค์ง€๋ช…์„ ์œ„ํ•ด ๋ณดํ†ต domain ์ด๋ฆ„์˜ ์—ญ์ˆœ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์ • ํด๋”, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ฐœ๋… (2) import ๋˜๋Š” 0๊ฐœ ๋˜๋Š” ๋‹ค์ˆ˜๊ฐœ ์กด์žฌ ํ˜„ ํด๋ž˜์Šค์—์„œ ์ฐธ์กฐํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์ž์‹ ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ช…์‹œ(๋‹จ, ํŒจํ‚ค์ง€๋Š” ์ž๋™์œผ๋กœ import๋จ) ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ importํ•จ (3) class ์ •์˜ * โ€™ โ€˜์˜ ๊ฒฝ์šฐ ์ƒ๋žต ๊ฐ€๋Šฅํ•จ 1๊ฐœ ๋˜๋Š” ๋‹ค์ˆ˜๊ฐœ ์กด์žฌ ์ ‘๊ทผ์ง€์ •์ž : , ๋งŒ ์˜ฌ ์ˆ˜ ์žˆ์Œ ํ™œ์šฉ์ง€์ •์ž : final, static ๋“ฑ ํด๋ž˜์Šค ์ด๋ฆ„ ๋ช…๋ช…๊ทœ์น™ : ๋ช…์‚ฌํ˜• + ๋Œ€๋ฌธ์žํ˜•โ€ฆ

July 06, 2021
java
language
โ˜•๏ธ [JAVA] ํด๋ž˜์Šค ๊ตฌ์กฐ์™€ ์ƒ์„ฑ์ž

ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ์™€ ์ƒ์„ฑ์ž ํด๋ž˜์Šค ๊ตฌ์กฐ ๊ฐ์ฒด์˜ ์†์„ฑ์™€ ํ–‰์œ„๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ํด๋ž˜์Šค์— ์ •์˜๋œ ๊ฒƒ์ด ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ์ž„ 1. ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜์™€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ถ„๋จ ํด๋ž˜์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค์˜ ์ƒํƒœ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์— ๋‹จ ํ•œ๋ฒˆ ์ƒ์„ฑ๋จ. ์ฆ‰, ๊ฐ™์€ ํด๋ž˜์Šค ๊ฐ์ฒด๋Š” ๊ฐ™์€ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•จ. ๋˜ํ•œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด ์ƒ์„ฑ() ์‹œ heap ์˜์—ญ์— ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ non-static ๊ฐ์ฒด์˜ ์ƒํƒœ ๊ฐ์ฒด ์ƒ์„ฑ() ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์— ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜. ์ฆ‰, ๊ฐ์ฒด๋ณ„ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง. 2. ๋ฉค๋ฒ„ ๋ฉ”์„œ๋“œ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ํด๋ž˜์Šค ๊ด€์ ์—์„œ์˜ ํ–‰์œ„ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์‹๋ณ„ํ•˜์ง€ ์•Š๊ณ ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๋“ค ๋ฉ”์„œโ€ฆ

July 06, 2021
java
language
โ˜•๏ธ [JAVA] ๊ฐ์ฒด์ง€ํ–ฅ ํ•ต์‹ฌ ๊ฐœ๋…

๊ฐ์ฒด์ง€ํ–ฅ ํ•ต์‹ฌ ๊ฐœ๋… ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ฐœ๋… ๊ฐ์ฒด์ง€ํ–ฅ(OOP, Object Oriented Programming)์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ 1960๋…„๋Œ€ ๋ง, โ€˜์†Œํ”„ํŠธ์›จ์–ด ์œ„๊ธฐ๋ก โ€™์ด ๋“ฑ์žฅ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ๋“ค์ด ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ๋กœ ๊ฐœ๋ฐœ๋œ ํ•˜๋“œ์›จ์–ด์™€ ๋‹ฌ๋ฆฌ ๋ชจ๋“ˆํ™”๊ฐ€ ๋˜์ง€ ์•Š์€ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ ๋ถˆํŽธํ•จ์ด ์ œ๊ธฐ๋จ -> ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“ˆํ™” ์š”๊ตฌ(๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„) ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๊ฐ€ ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ ์–ธ์–ด ํ”„๋กœ๊ทธ๋žจ ์žฌ์‚ฌ์šฉ ์‹œ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ ๋ชจ๋“ˆํ™”๋ฅผ ์‹œ๋„ํ•œ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜ ๊ฐ„ ์œ โ€ฆ

July 06, 2021
java
language
โ˜•๏ธ [JAVA] ์ž๋ฐ” ์—ฐ์‚ฐ์ž ๋ฐ ๋ฐฐ์—ด

JAVA ์—ฐ์‚ฐ์ž ๋ฐ ๋ฐฐ์—ด ์ž๋ฐ” ์—ฐ์‚ฐ์ž ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž boolean ๋ฐ์ดํ„ฐ ํƒ€์ž…(๋…ผ๋ฆฌํ˜•)์— ์ ์šฉ๋˜๋ฉฐ, ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ๋Š” true ๋˜๋Š” false ๊ฐ’์„ ๊ฐ€์ง and(&), or(|), not(!) ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•จ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ๋ฒ• ์„ค๋ช… & A & B A์™€ B ์ธ ๊ฒฝ์šฐ๋งŒ ๋ฅผ ๋ฆฌํ„ด && A && B - A์™€ B ๋ชจ๋‘ true์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฆฌํ„ด - ๋‹จ, ์ธ ๊ฒฝ์šฐ ๋ฅผ ๋ฆฌํ„ด | A | B A๋‚˜ B ์ค‘ ๋ผ๋ฉด ๋ฅผ ๋ฆฌํ„ด || A || B - A์™€ B ๋ชจ๋‘ true์ธ ๊ฒฝ์šฐ true๋ฅผ ๋ฆฌํ„ด - ๋‹จ, ์ธ ๊ฒฝ์šฐ ๋ฅผ ๋ฆฌํ„ด ! !A A๊ฐ€ , ๋ณ€๊ฒฝ ์ž๋ฐ”์˜ ๋ฐฐ์—ด ๊ฐ™์€ ๋ฐ์ดํ„ฐํƒ€์ž…์˜ ์ง‘ํ•ฉ Non-Primitive Type Data(Reference Tโ€ฆ

July 06, 2021
java
language
โ˜•๏ธ [JAVA] ์ž๋ฐ” ์‹๋ณ„์ž์™€ ์˜ˆ์•ฝ์–ด ๋ฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…

JAVA ์‹๋ณ„์ž์™€ ์˜ˆ์•ฝ์–ด ๋ฐ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์‹๋ณ„์ž์™€ ์˜ˆ์•ฝ์–ด ์‹๋ณ„์ž ์ƒ์„ฑ ๊ทœ์น™ ์ฒซ ๋ฌธ์ž๋Š” A-Z, a-z, _, $, ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ ํŠน์ˆ˜๋ฌธ์ž ์‚ฌ์šฉ๋ถˆ๊ฐ€(!, @, #, %, &, * ๋“ฑ) ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ณ , ๊ธธ์ด์— ์ œํ•œ์ด ์—†์Œ ์˜ˆ์•ฝ์–ด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์˜ˆ์•ฝ์–ด๋งŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ฒซ ๋ฌธ์ž์—๋Š” ์ˆซ์ž ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž, ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž, ๋ณ€์ˆ˜๋Š” ์†Œ๋ฌธ์ž, ์ƒ์ˆ˜๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ ์˜ˆ์•ฝ์–ด ์‹œ์Šคํ…œ์—์„œ ์ผ์ • ํŠน์„ฑ์„ ๊ฐ€์ง„ ์–ธ์–ด๋กœ ๋“ฑ๋ก๋œ ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์ •์˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋จ ์ž๋ฐ”์˜ ๋ชจ๋“  ์˜ˆ์•ฝ์–ด๋Š” ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง ์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž… Primitive Type(๊ธฐ๋ณธํ˜•) ํ• โ€ฆ

July 06, 2021
java
language
โ˜•๏ธ [JAVA] ์ž๋ฐ” ์–ธ์–ด ๋ฐ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ์š”

JAVA ์–ธ์–ด ๊ฐœ์š” ์ž๋ฐ”์˜ ํŠน์ง• ๋‹จ์ˆœํ•จ Java Garbage Collector์— ์˜ํ•œ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ฐ์ฒด์ง€ํ–ฅ์ (Object-Oriented) ์–ธ์–ด ์ฝ”๋“œ์™€ ๊ฐ์ฒด์˜ ์žฌ์‚ฌ์šฉ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API์˜ ๋‹ค์–‘์„ฑ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ์— ์šฉ์ดํ•จ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ TCP/IP ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํ†ต์‹  ๊ฐ€๋Šฅ ์›๊ฒฉ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ(RMI, Remote Method Invocation) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต ์ปดํŒŒ์ผ ์–ธ์–ด์ธ ๋™์‹œ์— ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์ž„ ์†Œ์Šค์ฝ”๋“œ(.java ํŒŒ์ผ) -> ์ปดํŒŒ์ผ(javac) -> ๋ฐ”์ดํŠธ ์ฝ”๋“œ์˜ ์ค‘๊ฐ„์ฝ”๋“œ(.class ํŒŒ์ผ) -> ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„ -> ์‹คํ–‰ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ž„ Write Once Run Anywhere ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ์™€ โ€ฆ

July 05, 2021
java
language
๐Ÿ…ฟ๏ธ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ์š•๋ฒ•(Greedy) - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ์š•๋ฒ•(Greedy) - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… ์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด 19, 12, 14, 92, 94, 24 ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ˆซ์ž number์™€ ์ œ๊ฑฐํ•  ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๊ฐ€ solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. number์—์„œ k ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”. ์ œํ•œ ์‚ฌํ•ญ number๋Š” 1์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ โ€ฆ

July 01, 2021
ps
programmers
๐Ÿ…ฟ๏ธ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ •๋ ฌ - ๊ฐ€์žฅ ํฐ ์ˆ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ •๋ ฌ - ๊ฐ€์žฅ ํฐ ์ˆ˜ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… 0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ 6, 10, 2๋ผ๋ฉด 6102, 6210, 1062, 1026, 2610, 2106๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค. 0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ œํ•œ ์‚ฌํ•ญ numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค. numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹คโ€ฆ

June 30, 2021
ps
programmers
๐ŸŽจ ๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ์ •๋ฆฌํ•˜๋Š” ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ• ์ œ ๋ธ”๋กœ๊ทธ์— ๋งž๊ฒŒ CSS๋ฅผ ์•ฝ๊ฐ„ ์ปค์Šคํ…€ํ–ˆ์Šต๋‹ˆ๋‹ค! ํ—ค๋”(Headers) html ํƒœ๊ทธ : < h1 > ~ < h6 > h1๋Š” ์งฑํฌ๊ฒŒ h2๋Š” ๋ฐ‘์ค„๊ณผ ํ•จ๊ป˜ h3๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ h4๋Š” ์ฌ๋” ํฌ๊ฒŒ h5๋Š” ์ฌ๋” ์ž‘๊ฒŒ h6๋Š” ~ํ๋ฆฌ๊ฒŒ~ ๋ฆฌ์ŠคํŠธ html ํƒœ๊ทธ : < ol >, < ul > ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ(Ordered List) ์ด๋ ‡๊ฒŒ ์›Œ๋“œ์—์„œ์ฒ˜๋Ÿผ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋ฉด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ์†Œ๋ฌธ์ž ๋กœ๋งˆ๋ฌธ์ž๋กœ ํ‘œ๊ธฐ๋ฉ๋‹ˆ๋‹ค. ์‰ฝ์ฃ ? ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฆฌ์ŠคํŠธ(Unordered List) ์ˆœ์„œ ์—†๋Š” ๋ฆฌ์ŠคํŠธ๋„ ์›Œ๋“œ์—์„œ์ฒ˜๋Ÿผ ๋Œ€์‹œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๋ณ„์ด๋‚˜ ํ”Œ๋Ÿฌ์Šค ๋ฌธ์ž๋„ ๋˜๋„ค์š”. ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋Š” ์—ญ์‹œ ๋“ค์—ฌ์“ฐโ€ฆ

June 28, 2021
blog