From 41d43afc980fa26747523510a542ac0ca06bf8be Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 28 Aug 2024 13:08:33 +0000 Subject: [PATCH] Rename and update Markdown files based on h1 titles --- .../algorithm-bookmark.md | 30 - .../algorithm/undefined-1.md | 298 ---- .../algorithm/undefined-2.md | 186 --- .../algorithm/undefined-3.md | 734 --------- .../algorithm/undefined-4.md | 386 ----- .../algorithm/undefined.md | 350 ----- .../array-vs-arraylist-vs-linkedlist.md | 138 -- .../data-structure/array.md | 95 -- .../data-structure/big-o.md | 426 ----- .../data-structure/biginteger.md | 210 --- .../data-structure/undefined-1.md | 120 -- .../data-structure/undefined-2.md | 373 ----- .../data-structure/undefined-3.md | 518 ------- .../data-structure/undefined-4.md | 149 -- .../data-structure/undefined.md | 136 -- developLog/book/learn-errors/1.md | 226 --- developLog/book/learn-errors/2.md | 187 --- developLog/book/learn-errors/3.md | 38 - developLog/book/mzdevlop.md | 422 ----- developLog/book/onboarding/1.md | 137 -- developLog/book/onboarding/2.md | 284 ---- developLog/book/onboarding/3.md | 243 --- developLog/book/onboarding/4/4-1.md | 643 -------- developLog/book/onboarding/4/4-2.md | 515 ------- developLog/book/onboarding/4/4-3.md | 38 - developLog/book/oop/1.md | 191 --- .../ci-cd/github-action/github-action.md | 3 - .../github-action/oauth-gitbook-github.io.md | 462 ------ developLog/ci-cd/github/git.md | 34 - developLog/ci-cd/github/github-1.md | 196 --- .../ci-cd/github/github.io/github.io-chipy.md | 217 --- developLog/ci-cd/github/github.md | 98 -- developLog/cs/cs-bookmark.md | 20 - developLog/cs/etc/cs.md | 424 ----- developLog/cs/http/http-1-1.md | 429 ------ developLog/cs/http/http-1.md | 272 ---- developLog/cs/http/http-2.md | 246 --- developLog/cs/http/http-3.md | 241 --- developLog/cs/http/http.md | 258 ---- developLog/cs/http/undefined.md | 166 -- developLog/cs/http/uri.md | 157 -- developLog/cs/network/story-01.-http-..md | 267 ---- developLog/cs/network/undefined.md | 17 - developLog/cs/os/untitled.md | 2 - developLog/cs/security/undefined.md | 16 - developLog/cs/sever/undefined.md | 172 --- developLog/ex/credential/adsp.md | 2 - .../4-2024-1.md | 176 --- .../undefined-1.md | 8 - .../undefined.md | 2 - developLog/ex/credential/sqld.md | 16 - developLog/ex/employment-job-change/si/20.md | 245 --- .../ex/employment-job-change/si/si-1.md | 498 ------ .../ex/employment-job-change/si/si-2.md | 743 --------- .../ex/employment-job-change/si/si-feat..md | 282 ---- developLog/ex/knowledge/undefined.md | 132 -- developLog/ex/my-story/undefined.md | 338 ---- developLog/ex/template/undefined-1.md | 11 - developLog/ex/template/undefined.md | 21 - developLog/memoir/2023/2023-11.md | 170 -- developLog/memoir/2023/2023-7-8.md | 280 ---- developLog/memoir/2023/2023-8-9.md | 135 -- developLog/memoir/2023/2023-9-10-11.md | 204 --- .../memoir/2023/change-2023-level-up-2024.md | 584 ------- developLog/memoir/2024/+-1-1.md | 454 ------ developLog/memoir/2024/2024-2-feat..md | 359 ----- developLog/memoir/2024/2024-3-4.md | 216 --- developLog/memoir/2024/2024-4-5-5-6.md | 353 ----- developLog/memoir/2024/2024-6.md | 345 ----- developLog/memoir/2024/2024-7.md | 439 ------ .../programming-lanuage/java/grammar/1.md | 486 ------ .../programming-lanuage/java/grammar/2.md | 569 ------- .../call-by-value-vs-call-by-reference.md | 183 --- .../java/grammar/nullpointexception-..md | 250 --- .../java/younghan-lecture/undefined.md | 1146 -------------- .../programming-lanuage/python/undefined-1.md | 1372 ----------------- .../programming-lanuage/python/undefined.md | 124 -- .../programming-lanuage/rust/chater-06..md | 818 ---------- .../programming-lanuage/rust/chater-12..md | 974 ------------ developLog/programming-lanuage/rust/rust.md | 95 -- .../programming-lanuage/rust/undefined.md | 31 - developLog/spring/basic/3-field-setter.md | 137 -- developLog/spring/basic/component-bean.md | 60 - developLog/spring/basic/jpa.md | 274 ---- developLog/spring/basic/messageconverter.md | 79 - developLog/spring/basic/mvc.md | 127 -- developLog/spring/basic/undefined-1.md | 69 - developLog/spring/basic/undefined.md | 169 -- developLog/spring/book/undefined.md | 173 --- .../spring/lecture/undefined/undefined.md | 148 -- developLog/tip-bookmark/blog-theme.md | 54 - developLog/tip-bookmark/bookmark.md | 228 --- .../tip-bookmark/coffeechat/undefined-1.md | 159 -- .../tip-bookmark/coffeechat/undefined.md | 329 ---- developLog/tip-bookmark/conference/be.md | 254 --- developLog/tip-bookmark/tech-blog.md | 9 - 96 files changed, 25100 deletions(-) delete mode 100644 developLog/algorithm-datastructure/algorithm-bookmark.md delete mode 100644 developLog/algorithm-datastructure/algorithm/undefined-1.md delete mode 100644 developLog/algorithm-datastructure/algorithm/undefined-2.md delete mode 100644 developLog/algorithm-datastructure/algorithm/undefined-3.md delete mode 100644 developLog/algorithm-datastructure/algorithm/undefined-4.md delete mode 100644 developLog/algorithm-datastructure/algorithm/undefined.md delete mode 100644 developLog/algorithm-datastructure/data-structure/array-vs-arraylist-vs-linkedlist.md delete mode 100644 developLog/algorithm-datastructure/data-structure/array.md delete mode 100644 developLog/algorithm-datastructure/data-structure/big-o.md delete mode 100644 developLog/algorithm-datastructure/data-structure/biginteger.md delete mode 100644 developLog/algorithm-datastructure/data-structure/undefined-1.md delete mode 100644 developLog/algorithm-datastructure/data-structure/undefined-2.md delete mode 100644 developLog/algorithm-datastructure/data-structure/undefined-3.md delete mode 100644 developLog/algorithm-datastructure/data-structure/undefined-4.md delete mode 100644 developLog/algorithm-datastructure/data-structure/undefined.md delete mode 100644 developLog/book/learn-errors/1.md delete mode 100644 developLog/book/learn-errors/2.md delete mode 100644 developLog/book/learn-errors/3.md delete mode 100644 developLog/book/mzdevlop.md delete mode 100644 developLog/book/onboarding/1.md delete mode 100644 developLog/book/onboarding/2.md delete mode 100644 developLog/book/onboarding/3.md delete mode 100644 developLog/book/onboarding/4/4-1.md delete mode 100644 developLog/book/onboarding/4/4-2.md delete mode 100644 developLog/book/onboarding/4/4-3.md delete mode 100644 developLog/book/oop/1.md delete mode 100644 developLog/ci-cd/github-action/github-action.md delete mode 100644 developLog/ci-cd/github-action/oauth-gitbook-github.io.md delete mode 100644 developLog/ci-cd/github/git.md delete mode 100644 developLog/ci-cd/github/github-1.md delete mode 100644 developLog/ci-cd/github/github.io/github.io-chipy.md delete mode 100644 developLog/ci-cd/github/github.md delete mode 100644 developLog/cs/cs-bookmark.md delete mode 100644 developLog/cs/etc/cs.md delete mode 100644 developLog/cs/http/http-1-1.md delete mode 100644 developLog/cs/http/http-1.md delete mode 100644 developLog/cs/http/http-2.md delete mode 100644 developLog/cs/http/http-3.md delete mode 100644 developLog/cs/http/http.md delete mode 100644 developLog/cs/http/undefined.md delete mode 100644 developLog/cs/http/uri.md delete mode 100644 developLog/cs/network/story-01.-http-..md delete mode 100644 developLog/cs/network/undefined.md delete mode 100644 developLog/cs/os/untitled.md delete mode 100644 developLog/cs/security/undefined.md delete mode 100644 developLog/cs/sever/undefined.md delete mode 100644 developLog/ex/credential/adsp.md delete mode 100644 developLog/ex/credential/engineer-information-processing/4-2024-1.md delete mode 100644 developLog/ex/credential/engineer-information-processing/undefined-1.md delete mode 100644 developLog/ex/credential/engineer-information-processing/undefined.md delete mode 100644 developLog/ex/credential/sqld.md delete mode 100644 developLog/ex/employment-job-change/si/20.md delete mode 100644 developLog/ex/employment-job-change/si/si-1.md delete mode 100644 developLog/ex/employment-job-change/si/si-2.md delete mode 100644 developLog/ex/employment-job-change/si/si-feat..md delete mode 100644 developLog/ex/knowledge/undefined.md delete mode 100644 developLog/ex/my-story/undefined.md delete mode 100644 developLog/ex/template/undefined-1.md delete mode 100644 developLog/ex/template/undefined.md delete mode 100644 developLog/memoir/2023/2023-11.md delete mode 100644 developLog/memoir/2023/2023-7-8.md delete mode 100644 developLog/memoir/2023/2023-8-9.md delete mode 100644 developLog/memoir/2023/2023-9-10-11.md delete mode 100644 developLog/memoir/2023/change-2023-level-up-2024.md delete mode 100644 developLog/memoir/2024/+-1-1.md delete mode 100644 developLog/memoir/2024/2024-2-feat..md delete mode 100644 developLog/memoir/2024/2024-3-4.md delete mode 100644 developLog/memoir/2024/2024-4-5-5-6.md delete mode 100644 developLog/memoir/2024/2024-6.md delete mode 100644 developLog/memoir/2024/2024-7.md delete mode 100644 developLog/programming-lanuage/java/grammar/1.md delete mode 100644 developLog/programming-lanuage/java/grammar/2.md delete mode 100644 developLog/programming-lanuage/java/grammar/call-by-value-vs-call-by-reference.md delete mode 100644 developLog/programming-lanuage/java/grammar/nullpointexception-..md delete mode 100644 developLog/programming-lanuage/java/younghan-lecture/undefined.md delete mode 100644 developLog/programming-lanuage/python/undefined-1.md delete mode 100644 developLog/programming-lanuage/python/undefined.md delete mode 100644 developLog/programming-lanuage/rust/chater-06..md delete mode 100644 developLog/programming-lanuage/rust/chater-12..md delete mode 100644 developLog/programming-lanuage/rust/rust.md delete mode 100644 developLog/programming-lanuage/rust/undefined.md delete mode 100644 developLog/spring/basic/3-field-setter.md delete mode 100644 developLog/spring/basic/component-bean.md delete mode 100644 developLog/spring/basic/jpa.md delete mode 100644 developLog/spring/basic/messageconverter.md delete mode 100644 developLog/spring/basic/mvc.md delete mode 100644 developLog/spring/basic/undefined-1.md delete mode 100644 developLog/spring/basic/undefined.md delete mode 100644 developLog/spring/book/undefined.md delete mode 100644 developLog/spring/lecture/undefined/undefined.md delete mode 100644 developLog/tip-bookmark/blog-theme.md delete mode 100644 developLog/tip-bookmark/bookmark.md delete mode 100644 developLog/tip-bookmark/coffeechat/undefined-1.md delete mode 100644 developLog/tip-bookmark/coffeechat/undefined.md delete mode 100644 developLog/tip-bookmark/conference/be.md delete mode 100644 developLog/tip-bookmark/tech-blog.md diff --git a/developLog/algorithm-datastructure/algorithm-bookmark.md b/developLog/algorithm-datastructure/algorithm-bookmark.md deleted file mode 100644 index edaf3b1..0000000 --- a/developLog/algorithm-datastructure/algorithm-bookmark.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -icon: circle-bookmark ---- - -# Algorithm ๊ด€๋ จ bookmark - -### ๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -> ์กฐ๊ธˆ ๊ดœ์ฐฎ์€ ๊ธฐ์—…์œผ๋กœ ๊ฐ€๋ ค๋ฉด ํ•„์ˆ˜์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ - -* [์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€์— ๋Œ€ํ•œ ๋กœ๋“œ๋งต](https://blog.yena.io/studynote/2018/11/14/Algorithm-Basic.html) ์ดˆ๋ณด์ž ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ ์‹œ์ž‘ ๋ฐฉ๋ฒ• ๋ฐ ์ˆœ์„œ -* [์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ ๋ธ”๋กœ๊ทธ](https://velog.io/@matisse/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%83%89-%EC%A0%95%EB%A0%AC-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ„๋‹จ ์ •๋ฆฌ ๋ธ”๋กœ๊ทธ -* [์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ”๋ณด ์ทจ์—…์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ](https://covenant.tistory.com/220) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ”๋ณด์˜ ์ทจ์ค€์„ ์œ„ํ•œ ์ฝ”ํ…Œ ๊ณต๋ถ€๋ฐฉ๋ฒ• -* [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ๋ฌธ์ œ์ง‘ with Baekjoon](https://github.com/tony9402/baekjoon) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ๋ฌธ์ œ์ง‘์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒ˜์Œ ์‹œ์ž‘ ์‹œ ์ฐธ๊ณ ํ•ด์•ผ ํ•˜๋Š” ๋ธ”๋กœ๊ทธ๋“ค๋„ ๋‚˜์™€ ์žˆ๋‹ค. -* [๋งˆ๋ฒ•์˜ ์Šˆํผ๋งˆ๋ฆฌ์˜ค ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ](https://m.blog.naver.com/PostList.nhn?blogId=kks227\&categoryNo=299\&logCode=0\&categoryName=%EB%8C%80%ED%9A%8C%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98) ์œ ๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ -* [์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดˆ๋ณด ๋ฒ—์–ด๋‚˜๊ธฐ 3๋‹จ๊ณ„](https://claudiajkang.medium.com/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%B4%88%EB%B3%B4%EC%97%90%EC%84%9C-%EB%B2%97%EC%96%B4%EB%82%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%97%AC%EC%A0%95-1ffb6bdfec6b) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณด๋ณด ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ๋‚˜์™€ ์žˆ์Œ -* [๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์‚ฌ์ดํŠธ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดˆ๋ณด๊ฐ€ ๊ณต๋ถ€ํ•˜๋Š” ๋ฐฉ๋ฒ•](https://velog.io/@dragoocho/%EB%B0%B1%EC%A4%80-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A1%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95) ๋ฒจ๋กœ๊ทธ ๊ธ€์ธ๋ฐ ์‹ค์ฒœ์ ์ธ ๋ฐฉ์•ˆ ์ž˜ ๋‚˜์™€์žˆ์Œ -* [ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฒ•](https://seamless.tistory.com/96) ์›”๊ฐ„ ๋งˆ์†Œ 2002๋…„์— ๊ธฐ๊ณ ๋œ ๊น€์ฐฝ์ค€ ๋‹˜์˜ "์–ด๋–ป๊ฒŒ ๊ณต๋ถ€ํ• ๊นŒ: ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ๊ณต๋ถ€๋ก "์ด๋ผ๋Š” ๊ธฐ์‚ฌ ๋‚ด์šฉ ํฌ์ŠคํŒ… ๋˜์–ด ์žˆ๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€ -* [์ดˆ๊ธ‰-์ค‘๊ธ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ์ปค๋ฆฌํ˜๋Ÿผ ์ถ”์ฒœ (3๊ฐœ์›”)](https://dev-dain.tistory.com/155) ์ดˆ๊ธ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปค๋ฆฌํ˜๋Ÿผ์— ๋Œ€ํ•ด ๋‚˜์™€ ์žˆ์Œ -* [์›ํ‹ฐ๋“œ ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘ ์™„์ „ ์ •๋ณตํ•˜๊ธฐ (1) - ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํŽธ](https://www.wanted.co.kr/events/22\_11\_s01\_b15) ์›ํ‹ฐ๋“œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํŽธ - - \ - - -### ๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด ์‚ฌ์ดํŠธ - -* [๋ฐฑ์ค€](https://www.acmicpc.net/) -* [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค](https://programmers.co.kr/) -* [์ •์˜ฌ](https://jungol.co.kr/) -* [solved](https://solved.ac/) diff --git a/developLog/algorithm-datastructure/algorithm/undefined-1.md b/developLog/algorithm-datastructure/algorithm/undefined-1.md deleted file mode 100644 index 6c23595..0000000 --- a/developLog/algorithm-datastructure/algorithm/undefined-1.md +++ /dev/null @@ -1,298 +0,0 @@ -# ๊ตฌํ˜„ - - [๊ตฌํ˜„ ๋…ธ์…˜ ์ •๋ฆฌ ๋ฒ„์ „](https://incredible-gem-98e.notion.site/04-eacbe1bf99664c9e89479eb609f7d0f7) - -
- -### ๐Ÿ“š ์•„์ด๋””์–ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ตฌํ˜„ - -*** - -> * ํ”ผ์ง€์ปฌ๋กœ ์Šน๋ถ€ํ•˜๊ธฐ โ‡’ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์— ๋Šฅ์ˆ™ํ•˜๊ณ  ์ฝ”๋“œ ์ž‘์„ฑ ์†๋„๊ฐ€ ๋น ๋ฅธ ์‚ฌ๋žŒ - -* **๊ตฌํ˜„** : ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ • -* ๊ตฌํ˜„ ๋ฌธ์ œ ์œ ํ˜•์€ ๋ชจ๋“  ๋ฒ”์œ„์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ ์œ ํ˜•์„ ํฌํ•จํ•˜๋Š” ๊ฐœ๋… -* ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ์ต์ˆ™ํ•˜๊ฒŒ ํ•˜์ž - -#### ๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ๋•Œ ๊ณผ์ • - -1. ์ƒ๊ฐํ•ด๋‚ธ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ •ํ™•ํžˆ ๊ตฌํ˜„ -2. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ - -#### ๐Ÿ“ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ถ„์•ผ์—์„œ ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ž€? - -1. ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฌ์šฐ๋‚˜ ์†Œ์Šค์ฝ”๋“œ๋กœ๋Š” ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ -2. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•œ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น  ๋งŒํผ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ -3. ์‹ค์ˆ˜ ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ๊ณ , ํŠน์ • ์†Œ์ˆ˜์  ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ -4. ์ ์ ˆํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ - -#### ๐Ÿ“ ๊ตฌํ˜„์˜ ์œ ํ˜• - -1. **์™„์ „ ํƒ์ƒ‰** : `๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜`๋ฅผ ์ฃผ์ € ์—†์ด ๋‹ค ๊ณ„์‚ฐํ•˜๋Š” ํ•ด๊ฒฐ๋ฐฉ๋ฒ• -2. **์‹œ๋ฎฌ๋ ˆ์ด์…˜** : ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•œ ๋‹จ๊ณ„์”ฉ `์ฐจ๋ก€๋กœ` ์ง์ ‘ ์ˆ˜ํ–‰ โ‡’ **๋ฐฉํ–ฅ ๋ฒกํ„ฐ**๊ฐ€ ์ž์ฃผ ํ™œ์šฉ - -#### ๐Ÿ“ํ–‰๋ ฌ - -* 2์ฐจ์› ๊ณต๊ฐ„(๋ฐ˜๋ณต์ ์œผ๋กœ ์บ๋ฆญํ„ฐ ์ด๋™ ๋ฌธ์ œ) -* ์—ด๊ณผ ํ–‰์ด ์žˆ์Œ - -| (0, 0) | (0,1) | (0, 2) | (0, 3) | -| ------ | ------ | ------ | ------ | -| (1, 0) | (1, 1) | (1, 2) | (1, 3) | -| (2, 0) | (2, 1) | (2, 2) | (2, 3) | - -```python -for i in range(5): - for j in range(5): - print('(', i, ',', j ')', end=' ') -print() -``` - -```python -# ๋™ ๋ถ ์„œ ๋‚จ -dx = [0, -1, 0, 1] # ์„ธ๋กœ์ถ• ๊ธฐ์ค€์œผ๋กœ -dy = [1, 0, -1, 0] - -# ํ˜„์žฌ ์œ„์น˜ -x, y =1, 2 - -for i in range(4): - # ๋‹ค์Œ ์œ„์น˜ - nx = x + dx[i] - ny = y + dy[i] - print(nx, ny) -``` - -**๋ถ€๊ฐ€์„ค๋ช…** : ๋™์ชฝ์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด ์—ด์€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ํ–‰์€ ์ฆ๊ฐ€ํ•จ - -EX. (1, 0) โ†’ (2, 0)\ -\ - - -### ๐Ÿ“š ๊ตฌํ˜„ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์‚ฌํ•ญ - -*** - -**1. C/C++์—์„œ ๋ณ€์ˆ˜์˜ ํ‘œํ˜„ ๋ฒ”์œ„** - ์ •์ˆ˜ํ˜• int(4๋ฐ”์ดํŠธ) < int๋ณด๋‹ค ํฐ long long(8๋ฐ”์ดํŠธ) < `BigInteger(ํด๋ž˜์Šค)` : **๊ฐ€๋ณ€์ **์ด๋ฉฐ, ์ž๋ฃŒํ˜•์˜ ๋ฒ”์œ„๋Š” **์ œํ•œ ์—†์Œ** - ํ•˜์ง€๋งŒ c++์˜ ๊ฒฝ์šฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉ - -**2. ํŒŒ์ด์ฌ** - ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ž๋ฃŒํ˜• ์ง€์ •ํ•  ํ•„์š” ์—†์Œ, ๋งค์šฐ ํฐ ์ˆ˜์˜ ์—ฐ์‚ฐ ๋˜ํ•œ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์› - ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜์˜ ์—ฐ์‚ฐ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ No! - but, **์‹ค์ˆ˜ํ˜• ๋ณ€์ˆ˜**๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ ํšจ์ˆซ์ž์— ๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ - -3. ํŒŒ์ด์ฌ์—์„œ `๋ฆฌ์ŠคํŠธ`์˜ ๊ณ ๋ ค์‚ฌํ•ญโœจ - 1. ํŒŒ์ด์ฌ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์‹œ ๋ฆฌ์ŠคํŠธ ์ด์šฉ - 2. **๋ฉ”๋ชจ๋ฆฌ ์‚ฌํ•ญ** ๊ณ ๋ ค - - * ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ 128\~512MB๋กœ **๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์—ผ๋‘**์— ๋‘๊ณ  ํ’€์–ด์•ผ ํ•จ - * ํฌ๊ธฐ๊ฐ€ 1,000๋งŒ ์ด์ƒ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ์ œํ•œ์œผ๋กœ ํ’€์ง€ ๋ชปํ•จ - * int ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ - - | ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜(๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด) | ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ | - | ---------------- | ------- | - | 1,000 | ์•ฝ 4KB | - | 1,000,000 | ์•ฝ 4MB | - | 10,000,000 | ์•ฝ 40MB | - |



| | - -### ๐Ÿ“š ์ฑ„์  ํ™˜๊ฒฝ - -*** - -* ์‹œ๊ฐ„ ์ œํ•œ : 1์ดˆ -* ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ : 128MB - - โ‡’ ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ **1์ดˆ์— 2,000๋งŒ๋ฒˆ**์˜ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋งŒ ์•Œ๋ฉด ๋จ -* ์‹œ๊ฐ„ ์ œํ•œ : 1์ดˆ, ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ : 100๋งŒ๊ฐœ - - โ‡’ ์‹œ๊ฐ„ ๋ณต์žก๋„ `O(NlogN)` ์ด๋‚ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•จ - -๐Ÿ’ก **TIP)** ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ๋Š” `์‹œ๊ฐ„ ์ œํ•œ`๊ณผ `๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜`๋ฅผ ๋จผ์ € ํ™•์ธ ํ•œ ๋’ค, ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋Š ์ •๋„์˜ `์‹œ๊ฐ„๋ณต์žก๋„`์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ์ง€ ์˜ˆ์ธก - -\ -\ - - -### ๐Ÿ“š ๊ตฌํ˜„ ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• - -*** - -* ์‚ฌ์†Œํ•œ ์ž…๋ ฅ ์กฐ๊ฑด ๋“ฑ ๋ฌธ์ œ์—์„œ ๋ช…์‹œํ•ด์ฃผ๋ฉฐ, ๋ฌธ์ œ์˜ ๊ธธ์ด ํฐ ํŽธ -* ํŒŒ์ด์ฌ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ์‹œ ์ข‹์€ ์  ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋น„๊ต - -| | ๊ตฌํ˜„ ๋‚œ์ด๋„ | ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ๊ฐ„ | -| ----- | ------ | ---------- | -| ํŒŒ์ด์ฌ | ์‰ฌ์šด ํŽธ | ๊ธด ํŽธ | -| PyPy | ์‰ฌ์šด ํŽธ | ๋‹ค์†Œ ์งง์€ ํŽธ | -| C/C++ | ์–ด๋ ค์šด ํŽธ | ์งง์€ ํŽธ | - -* ํŒŒ์ด์ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ์‹œ, ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU)๋ฅผ ์—ฐ๋™ํ•˜๋ฉฐ, ๋ฐ˜๋ณต์ ์ธ ํ–‰๋ ฌ ๊ณ„์‚ฐ์„ ์š”๊ตฌํ•˜๋Š” ๋ณต์žกํ•œ ์ˆ˜ํ•™ ๋ฌธ์ œ์‹œ C์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ด์ฌ ์ฝ”์–ด ์†Œํ”„ํŠธ์›จ์–ด ๋™์ž‘ -* BUT, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™˜๊ฒฝ์—์„œ๋Š” GPU ์—ฐ์‚ฐ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ -* ์ž๋™ ์ฑ„์ ๋ฐฉ์‹ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” **PyPy3**๋ฅผ ์ง€์›ํ•˜๋Š” ๊ณณ์ด ์ฆ๊ฐ€ - - โ‡’ PyPy3๋ž€ ํŒŒ์ด์ฌ 3์˜ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์ง€์›, ํŒŒ์ด์ฌ3๋ณด๋‹ค **์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค** -* ํŒŒ์ด์ฌ ์ด์šฉ์‹œ API ๊ฐœ๋ฐœ ๋ฌธ์ œ๋ฅผ ๋ณด๋”๋ผ๋„ ์ƒ๋Œ€์ ์œผ๋กœ ๋ฌด๋‚œํ•˜๊ฒŒ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ\ - \ - - -#### ์˜ˆ์ œ 4-1 ์ƒํ•˜์ขŒ์šฐ - -*** - -> * ๋ฌธ์ œ p.110 - ์—ฌํ–‰์ž A๋Š” N\*N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„ ์œ„ ์„œ ์žˆ์Œ - ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„ ์ขŒํ‘œ **(1,1)**, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ขŒํ‘œ\*\*(N, N)\*\* - ์‹œ์ž‘ ์ขŒํ‘œ๋Š” ํ•ญ์ƒ (1,1) ์ƒ,ํ•˜,์ขŒ,์šฐ ์ด๋™ ๊ฐ€๋Šฅ - ๊ณ„ํš์„œ : ํ•˜๋‚˜์˜ ์ค„์— ๋„์–ด์“ฐ๊ธฐ ๊ธฐ์ค€์œผ๋กœ **L,R,U,D** ์ค‘ ํ•˜๋‚˜์˜ ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ํ˜€ ์žˆ์Œ - -* L : ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™, R : ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™, U : ์œ„๋กœ ํ•œ ์นธ ์ด๋™, D : ์•„๋ž˜๋กœ ํ•œ ์นธ ์ด๋™ - - * N\*N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ์›€์ง์ž„์€ ๋ฌด์‹œ - * ๊ณ„ํš์„œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์—ฌํ–‰์ž A๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ - - โ“ ์ž…๋ ฅ์กฐ๊ฑด - - * ์ฒซ์งธ ์ค„ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” N์ด ์ฃผ์–ด์ง„๋‹ค$(1\leq N \leq 100)$ - * ๋‘˜์งธ ์ค„์— ์—ฌํ–‰์ž A๊ฐ€ ์ด๋™ํ•  ๊ณ„ํš์„œ ๋‚ด์šฉ์ด ์ฃผ์–ด์ง„๋‹ค ($1 \leq ์ด๋™ํšŸ์ˆ˜ \leq 100)$ - - โ“ ์ถœ๋ ฅ์กฐ๊ฑด - - * ์ฒซ์งธ ์ค„์— ์—ฌํ–‰๊ฐ€ A๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ(X,Y)๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅ - -๐Ÿ‘Œ ๋ฌธ์ œ ํ•ด๊ฒฐ - -* ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N) ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋„‰๋„‰ํ•œ ํŽธ -* ์ผ๋ จ์˜ ๋ช…๋ น์— ๋”ฐ๋ผ์„œ ๊ฐœ์ฒด๋ฅผ `์ฐจ๋ก€๋Œ€๋กœ` ์ด๋™์‹œํ‚จ๋‹ค๋Š” ์  : **์‹œ๋ฎฌ๋ ˆ์ด์…˜** ์œ ํ˜• -* ์ฐธ๊ณ  **for๋ฌธ** - - * ํŒŒ์ด์ฌ์—์„œ for๋ฌธ์€ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์ค‘์š” - * for\*\*\[๋ณ€์ˆ˜1]\*\* in **\[๋ฌธ์ž์—ด1, ๋ฆฌ์ŠคํŠธ1, ํŠœํ”Œ1]**: - - ```python - arr = [1, 2, 3, 4, 5] - for i in arr: - print(i) - - ``` - -```python -# N์„ ์ž…๋ ฅ๋ฐ›๊ธฐ -n = int(input()) -x, y = 1, 1 # ํ˜„์žฌ ์œ„์น˜ -plans = input().split() - -# L,R,U,D ๋ฐฉํ–ฅ์— ๋”ฐ๋ฅธ ์ด๋™ ์ด๋™, **๋ฐฉํ–ฅ ๋ฒกํ„ฐ** -dx = [0,0,-1,1] # x์ขŒํ‘œ๋Š” ์ขŒ์šฐ -dy = [-1,1,0,0] # y์ขŒํ‘œ๋Š” ์œ„์•„๋ž˜ -move_types=['L', 'R', 'U', 'D'] - -# ์ด๋™ ๊ณ„ํš์„ ํ•˜๋‚˜์”ฉ ํ™•์ธ -for plan in plans : - # ์ด๋™ ํ›„ ์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ - for i in range(len(move_types)): - if plan == move_types[i]: - nx = x + dx[i] - ny = y + dy[i] - # ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฌด์‹œ - if nx<1 or ny<1 or nx>n or ny>n: - countinue # ์ค‘๊ฐ„์— ๋ฉˆ์ถ”๊ณ  ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์ž - # ์ด๋™ ์ˆ˜ํ–‰ - x, y = nx, ny - -print(x, y) -``` - -โ‡’ ์ž…๋ ฅ๋ฐ›์„ ๊ฒŒ ๋ฌด์—‡์ธ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ฐจ๋ก€๋กœ ์ˆ˜ํ–‰ํ•ด ๋‚˜๊ฐ€๊ธฐ - -#### ๐Ÿ“ ์˜ˆ์ œ 4-2 ์‹œ๊ฐ - -*** - -* ๋ฌธ์ œ p.113 - - * ์ •์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ N์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์‹œ๊ฐ ์ค‘ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ - - โ“ ์ž…๋ ฅ์กฐ๊ฑด - - * ์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค$(0 \leq N \leq 23)$ - - โ“ ์ถœ๋ ฅ์กฐ๊ฑด - - * 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ N์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์‹œ๊ฐ ์ค‘ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -* ๋ชจ๋“  ์‹œ๊ฐ์˜ ๊ฒฝ์šฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ์…ˆ -* ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 100,000๊ฐœ๊ฐ€ ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด ์—ฐ์‚ฐ ์ด์šฉํ•ด๋„ ์‹œ๊ฐ„ ์ œํ•œ 2์ดˆ์•ˆ์— ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ -* ๋‹จ์ˆœํžˆ ์‹œ๊ฐ์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ํ™•์ธ โ‡’ **์™„์ „ ํƒ์ƒ‰** ์œ ํ˜•(๋น„ํšจ์œจ์ ์ด๋ผ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ํฐ ๊ฒฝ์šฐ ์ž‘๋™ ์•ˆํ•  ์ˆ˜ ์žˆ์Œ) -* ๊ฒฝ์šฐ์˜ ์ˆ˜ \*\*24(์‹œ๊ฐ„)_60(๋ถ„)60(์ดˆ) โ‡’ `3์ค‘ ๋ฐ˜๋ณต๋ฌธ` ์ด์šฉ_ -* `๋ฌธ์ž์—ด`๋กœ ๋ฐ”๊ฟ”์„œ ํ™•์ธ โ‡’ EX. 03์‹œ20๋ถ„23์ดˆ๋ผ๋ฉด โ€˜032023โ€™๋กœ ๋งŒ๋“ค์–ด์„œ ํ™•์ธ -* ์ฐธ๊ณ  str - - **ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ๋ณ€ํ™˜ - str()** - -```python -# H๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ -h = int(input()) - -count = 0 - -# h๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ -for i in range(h + 1): - for j in range(60): # ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„, ์ดˆ๋Š” 0๋ถ€ํ„ฐ 60๊นŒ์ง€๋กœ **๋ฒ”์œ„ ์„ค์ • ๋ฐ ์ฆ๊ฐ€ ํ•˜๊ฒŒ** - for k in range(60): - # ๋งค ์‹œ๊ฐ ์•ˆ์— 3์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€ - if '3' in str(i) + str(j) + str(k): # ์‹œ๊ฐ์„ **๋ฌธ์ž์—ด ๋ฐ”๊พผ ๋‹ค์Œ** ๋ฌธ์ž์—ด์— '3'์ด ํฌํ•จ๋๋Š”์ง€ ํ™•์ธ - count+=1 - -print(count) -``` - -\ -\ - - -### ๐Ÿ“š ์‹ค์ „๋ฌธ์ œ ์™•์‹ค์˜ ๋‚˜์ดํŠธ - -*** - -> * ๋ฌธ์ œ p.115 - ์™•์‹ค ์ •์› 8\*8 ์ขŒํ‘œ ํ‰๋ฉด - ๋‚˜์ดํŠธ๋Š” ๋ง์„ ํƒ€๊ณ  ์žˆ๊ธฐ์— ์ด๋™์‹œ, L์ž ํ˜•ํƒœ๋กœ๋งŒ ์ด๋™ ๊ฐ€๋Šฅ, ์ •์› ๋ฐ–์œผ๋กœ ์ด๋™ ๋ถˆ๊ฐ€ 1. ์ˆ˜ํ‰์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜์ง์œผ๋กœ ํ•œ ์นธ ์ด๋™ 2. ์ˆ˜์ง์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜ํ‰์œผ๋กœ ํ•œ ์นธ ์ด๋™ - -``` -โ“ ์ž…๋ ฅ์กฐ๊ฑด - -- ์ฒซ์งธ ์ค„์— 8*8 ์ขŒํ‘œ ํ‰๋ฉด์ƒ์—์„œ ํ˜„์žฌ ๋‚˜์ดํŠธ๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋œ๋‹ค. ์ž…๋ ฅ ๋ฌธ์ž๋Š” a1์ฒ˜๋Ÿผ ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค - -โ“ ์ถœ๋ ฅ์กฐ๊ฑด - -- ์ฒซ์งธ ์ค„์— ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ถœ๋ ฅ -``` - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -* ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜์—ฌ ์ด๋™ -* ๋‹ค๋งŒ, 8\*8ํ‰๋ฉด์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๊ผผ๊ผผํžˆ ๊ฒ€์‚ฌ -* ๋‚˜์ดํŠธ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ steps ๋ณ€์ˆ˜์— ๋„ฃ๋Š”๋‹ค๋ฉด - -```python -steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)] -``` - -* <์ฝ”๋“œ> - -```python -# ํ˜„์žฌ ๋‚˜์ดํŠธ ์œ„์น˜ ๋ฐ›๊ธฐ -input_data = input() -# ๋‘ ๋ฒˆ์งธ ์œ„์น˜์˜ ์ˆซ์ž๋ฅผ ๋ฐ”๊พผ ๊ฒƒ์ด ํ–‰ -row = int(input_data[1]) -# ๋ฌธ์ž๋กœ ๋“ค์–ด์˜จ ๊ฐ’์„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๊ณ  -column = int(ord(input_data[0]))-int(ord('a')) + 1 - -# ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” 8๊ฐ€์ง€ ๋ฑกํ–ฅ ์ •์˜, dx, dy์‚ฌ์šฉํ•ด๋„ ๊ฐ€๋Šฅ -steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)] - -# 8๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•˜์—ฌ ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ -result = 0 -for step in steps: - # ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜ ํ™•์ธ - next_row = row + step[0] - next_column = column + step[1] - # ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์นด์šดํŠธ ๋‹ค์šด - if next_row >=1 and next_row < =8 and next_column >=1 and next_column <= 8: - result +=1 - -print(result) -``` diff --git a/developLog/algorithm-datastructure/algorithm/undefined-2.md b/developLog/algorithm-datastructure/algorithm/undefined-2.md deleted file mode 100644 index 3a49f97..0000000 --- a/developLog/algorithm-datastructure/algorithm/undefined-2.md +++ /dev/null @@ -1,186 +0,0 @@ -# ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -> ๐Ÿ’ซ ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ž€ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  ์ž๋ฃŒ๊ตฌ์กฐ๋‚˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. - -## ๊ทธ๋ž˜ํ”„ - -### ๐Ÿ ๊ฐœ๋… - -* ๋…ธ๋“œ(์ •์ )์™€ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„ - -![](https://velog.velcdn.com/images/prettylee620/post/d133edf3-7d66-4e4d-8314-b6248f510270/image.png) - -#### ์ •์ ๊ณผ ๊ฐ„์„  - -> ์–ด๋– ํ•œ ๊ณณ์—์„œ ์–ด๋– ํ•œ ๊ณณ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ - -* ์ •์  : ์–ด๋– ํ•œ ๊ณณ, ์ถœ๋ฐœ์ง€์™€ ๋„์ฐฉ์ง€ -* ๊ฐ„์„  : ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋˜๋ฉฐ, ๊ฐ€๋Š” ๊ธธ - -#### ๋‹จ๋ฐฉํ–ฅ ๊ฐ„์„  - -* ์ง์‚ฌ๋ž‘ : ์ผ๋ฐฉ์  ๊ฐ„์„  -* ์‚ฌ๋ž‘ : ์–‘๋ฐฉํ–ฅ ๊ฐ„์„  - -### ๐Ÿ ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ - -* **๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰**์ด๋ž€? ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋‹ค์ˆ˜์˜ ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ -* ๋‘ ๋…ธ๋“œ๋Š” `์ธ์ ‘ํ•˜๋‹ค` = ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค - -### ๐Ÿ ์šฉ์–ด - -> 8/23 ๊ตญ๋น„์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ ์ถ”๊ฐ€ - -* ๋…ธ๋“œ (Node): ์œ„์น˜, ์ •์ (Vertex) -* ๊ฐ„์„  (Edge): ์œ„์น˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œ์‹œํ•œ ์„ . ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•œ ์„ (link ๋˜๋Š” branch) -* ์ธ์ ‘ ์ •์  (Adjacent Vertex) : ๊ฐ„์„ ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ •์ (๋˜๋Š” ๋…ธ๋“œ) -* ์ •์ ์˜ ์ฐจ์ˆ˜ (Degree): ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํ•˜๋‚˜์˜ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ์˜ ์ˆ˜ -* ์ง„์ž… ์ฐจ์ˆ˜ (In-Degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€์—์„œ ์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜ -* ์ง„์ถœ ์ฐจ์ˆ˜ (Out-Degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜ -* ๊ฒฝ๋กœ ๊ธธ์ด (Path Length): ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ๊ฐ„์„ ์˜ ์ˆ˜ -* ๋‹จ์ˆœ ๊ฒฝ๋กœ (Simple Path): ์ฒ˜์Œ ์ •์ ๊ณผ ๋ ์ •์ ์„ ์ œ์™ธํ•˜๊ณ  ์ค‘๋ณต๋œ ์ •์ ์ด ์—†๋Š” ๊ฒฝ๋กœ -* ์‚ฌ์ดํด (Cycle): ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ์ข…๋ฃŒ ์ •์ ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ - -### ๐Ÿ ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„๋ฒ• 2๊ฐ€์ง€ - -#### 1. **์ธ์ ‘ ํ–‰๋ ฌ(Adjacency Matrix)** : **2์ฐจ์› ๋ฐฐ์—ด**๋กœ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹ - -* 2์ฐจ์› ๋ฐฐ์—ด์— ๊ฐ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹ -* `2์ฐจ์› ๋ฆฌ์ŠคํŠธ` -* ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋…ธ๋“œ๋ผ๋ฆฌ ๋ฌดํ•œ์˜ ๋น„์šฉ์ด๋ผ๊ณ  ์ž‘์„ฑ - -1. ์žฅ์  - -* **์†๋„ ์ธก๋ฉด** : ํŠน์ •ํ•œ ๋‘ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” **์†๋„๊ฐ€ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋น ๋ฅด๋‹ค โ‡’ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๋…ธ๋“œ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ƒ์ˆ˜ ์‹œ๊ฐ„(O(1))์— ํ™•์ธ ๊ฐ€๋Šฅ โ‡’ ์ด์œ  : ๋ชจ๋“  ๊ด€๊ณ„๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ** -* ๊ฐ„์„ ์˜ ์œ ๋ฌด์™€ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•˜๊ธฐ์— ์œ ์šฉ - * ์ด์œ  : ๋ชจ๋“  ๊ด€๊ณ„ ์ €์žฅํ•˜๋‹ˆ๊นŒ -* ์ž‘์€ ๋ฐ€์ง‘ ๊ทธ๋ž˜ํ”„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋” ํšจ์œจ์  ์‚ฌ์šฉ ๊ฐ€๋Šฅ - * **๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ž‘์Œ**: ์ž‘์€ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ ์ธ์ ‘ ํ–‰๋ ฌ์€ ๋…ธ๋“œ ์ˆ˜์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ - * **๊ฐ„์„  ๊ฐœ์ˆ˜๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์Œ**: `๋ฐ€์ง‘ ๊ทธ๋ž˜ํ”„`๋Š” **๊ฐ„์„ ์ด ๋…ธ๋“œ ์ˆ˜์— ๋น„ํ•ด ๋งŽ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ**๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๊ฐ„์„ ์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์ด ๋ฆฌ์ŠคํŠธ๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ฆ๊ฐ€ํ•จ ์ด์™€ ๋‹ฌ๋ฆฌ ์ธ์ ‘ ํ–‰๋ ฌ์€ ๊ฐ„์„ ์˜ ์œ ๋ฌด๋งŒ ํ‘œ์‹œํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ผ์ • - * **๋น ๋ฅธ ๊ฐ„์„  ์กฐํšŒ**: ์ธ์ ‘ ํ–‰๋ ฌ์€ ๊ฐ„์„ ์˜ ์œ ๋ฌด๋ฅผ ์ƒ์ˆ˜ ์‹œ๊ฐ„(O(1))์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์€ ๋ฐ€์ง‘ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์ด๋Ÿฐ ๊ฐ„์„  ์กฐํšŒ๊ฐ€ ๋” ํšจ์œจ์  - -2. ๋‹จ์  - -* **๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด** : ๋ชจ๋“  ๊ด€๊ณ„๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ - -```python -INF = 999999999 # ๋ฌดํ•œ์˜ ๋น„์šฉ ์„ ์–ธ(์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋…ธ๋“œ) - -# 2์ฐจ์› ํžˆ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ์ธ์ ‘ํ•œ ํ–‰๋ ฌ ํ‘œํ˜„ -graph = [ - [0, 7, 5], - [7, 0, INF], - [5, INF, 0] -] - -print(graph) -``` - -**\[๊ฒฐ๊ณผ์ฐฝ]** - -![](https://velog.velcdn.com/images/prettylee620/post/e7cde8b5-5430-452b-af54-28e547a9fe2a/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/54457ecb-fb97-42a2-a59b-c807f112d0be/image.png) - -#### 2. **์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(Adjacency List)** : ๋ฆฌ์ŠคํŠธ๋กœ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹ - -* C++ Java์˜ ๊ฒฝ์šฐ, ๋ณ„๋„์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต -* ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์ธ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์ด `append()`์™€ ๋ฉ”์†Œ๋“œ ์ œ๊ณต - - โ‡’ ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ **๊ธฐ๋ณธ**์œผ๋กœ ์ œ๊ณต -* ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ์—๋„ `2์ฐจ์› ๋ฆฌ์ŠคํŠธ` ์ด์šฉํ•˜๋ฉด ๋จ - -1. ์žฅ์  - -* **๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด** : ์—ฐ๊ฒฐ๋œ ์ •๋ณด\[๋…ธ๋“œ]๋งŒ์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ ‘ํ–‰๋ ฌ๋ฐฉ์‹๋ณด๋‹ค ํšจ์œจ์  -* ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋‚˜ ๋…ธ๋“œ ์ˆ˜์— ๋ฌด๊ด€ํ•˜๊ฒŒ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ -* ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์‹œ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ๋น ๋ฅด๊ฒŒ ์ˆœํšŒ ๊ฐ€๋Šฅ -* ํฌ์†Œ ๊ทธ๋ž˜ํ”„์—์„œ ์ ํ•ฉํ•จ - * `ํฌ์†Œ ๊ทธ๋ž˜ํ”„`๋ž€ ๊ทธ๋ž˜ํ”„ ๋‚ด์— ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ **์ ์€** ๊ฒฝ์šฐ - * **๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ**: ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ ์‚ฌ์ด์—๋Š” ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋˜์ง€ ์•Š์Œ - * **๋น ๋ฅธ ๊ฐ„์„  ์กฐํšŒ**: ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์— ๋Œ€ํ•œ ์กฐํšŒ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง„๋‹ค. ํฌ์†Œ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋…ธ๋“œ ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ์ ์–ด์„œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒ ๊ฐ€๋Šฅ - * **์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ฐœ์„ **: ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ์†Œ ๊ทธ๋ž˜ํ”„์—์„œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ์ ์–ด์„œ ํƒ์ƒ‰์„ ์ค‘์ง€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ - -2. ๋‹จ์  - -* **์†๋„ ์ธก๋ฉด** : ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ •ํ•œ ๋‘ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” **์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.** - -3. ์˜ˆ์ œ - -* ํ•ด์„ - * \*\*`graph[0]`\*\*์— ์ €์žฅ๋œ ์ •๋ณด : ๋…ธ๋“œ 0๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ 1, ๊ฑฐ๋ฆฌ 7 + ๋…ธ๋“œ 0๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ 2, ๊ฑฐ๋ฆฌ 5 - * \*\*`graph[1]`\*\*์— ์ €์žฅ๋œ ์ •๋ณด : ๋…ธ๋“œ 1๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ 0 ์ €์žฅ - * \*\*`graph[2]`\*\*์— ์ €์žฅ๋œ ์ •๋ณด : ๋…ธ๋“œ 2์™€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ 0๋งŒ์ด ์ €์žฅ - -```python -# ํ–‰(Row)์ด 3๊ฐœ์ธ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„ -graph = [[] for _ in range(3)] - -# ๋…ธ๋“œ 0์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ •๋ณด ์ €์žฅ(์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ, ๊ฑฐ๋ฆฌ) -graph[0].append((1, 7)) -graph[0].append((2, 5)) - -# ๋…ธ๋“œ 1์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ •๋ณด ์ €์žฅ -graph[1].append((0, 7)) - -# ๋…ธ๋“œ 2์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ •๋ณด ์ €์žฅ -graph[2].append((0, 5)) - -print(graph) -``` - -* ์ฝ”๋“œ ์‹œ๊ฐํ™” ์‚ฌ์ง„ - -![](https://velog.velcdn.com/images/prettylee620/post/74c15462-583a-4c68-9bc6-395e3b6122ec/image.png) - -**\[๊ฒฐ๊ณผ์ฐฝ]** - -![](https://velog.velcdn.com/images/prettylee620/post/7fb6d339-7edf-4fec-99dc-e9421513793d/image.png) - -### ๐Ÿ ๊ทธ๋ž˜ํ”„ (Graph) ์ข…๋ฅ˜ - -#### ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (Undirected Graph) - -* ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„ -* ๊ฐ„์„ ์„ ํ†ตํ•ด, ๋…ธ๋“œ๋Š” ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Œ - -#### ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (Directed Graph) - -* ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„ - -#### ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„ (Weighted Graph) ๋˜๋Š” ๋„คํŠธ์›Œํฌ (Network) - -* ๊ฐ„์„ ์— ๋น„์šฉ ๋˜๋Š” ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„ - -#### ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Connected Graph) - -* ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ํ•ญ์ƒ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ - -#### ๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Disconnected Graph) - -* ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํŠน์ • ๋…ธ๋“œ์— ๋Œ€ํ•ด ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ - -#### ์‚ฌ์ดํด (Cycle) - -* ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ๋…ธ๋“œ์™€ ์ข…๋ฃŒ ๋…ธ๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ - -#### ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ (Acyclic Graph) - -* ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„ - -#### ์™„์ „ ๊ทธ๋ž˜ํ”„ (Complete Graph) - -* ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„ - -### ๐Ÿ ๊ทธ๋ž˜์„œ ์–ด๋””์„œ ์“ฐ๋ƒ?\[chat gpt์˜ ๋‹ต๋ณ€] - -> ์ฆ‰, ๊ทธ๋ž˜ํ”„๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์  - -1. **์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. -2. **์‹ ์žฅ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. -3. **ํ๋ฆ„ ๋„คํŠธ์›Œํฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๋„คํŠธ์›Œํฌ์˜ ํ๋ฆ„์„ ์ตœ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ํฌ๋“œ-ํ’€์ปค์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค. -4. **๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. -5. **์œ„์ƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ž‘์—…์„ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. -6. **์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์‹ ์žฅ ํŠธ๋ฆฌ ์ค‘ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ํŠธ๋ฆฌ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. -7. **๊ฒฝ๋กœ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ๋‘ ๋…ธ๋“œ ๊ฐ„์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)์ด๋‚˜ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -8. **๋„คํŠธ์›Œํฌ ํ”Œ๋กœ์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜**: ํŠน์ • ์กฐ๊ฑดํ•˜์—์„œ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ์ •๋ณด๋‚˜ ๋ฌผ๋Ÿ‰์˜ ํ๋ฆ„์„ ์ตœ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. diff --git a/developLog/algorithm-datastructure/algorithm/undefined-3.md b/developLog/algorithm-datastructure/algorithm/undefined-3.md deleted file mode 100644 index 9bc8e5e..0000000 --- a/developLog/algorithm-datastructure/algorithm/undefined-3.md +++ /dev/null @@ -1,734 +0,0 @@ -# ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ, ์„ ํƒ ์ •๋ ฌ - -## ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -> ์ฐธ๊ณ  ๋™์ž‘ ๋ฐฉ์‹ ๋งํฌ : https://visualgo.net/en/sorting - -### ๐Ÿ‡ ์ •์˜ - -* ์–ด๋–ค ๋ฐ์ดํ„ฐ๋“ค์ด ์ฃผ์–ด์กŒ์„๋•Œ, ์ด๋ฅผ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ -* ๋ญ”๊ฐ€๋ฅผ `์ •๋ ฌ`ํ•˜๋Š” ๊ฒƒ - * A๋ถ€ํ„ฐ Z๊นŒ์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ - * ํฐ ์ˆ˜์—์„œ ์ž‘์€ ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ -* ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ -* ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์‹œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ -* `์ด์ง„๊ฒ€์ƒ‰`์ฒ˜๋Ÿผ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ -* ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ `ํšจ์œจ์„ฑ`์„ ์‰ฝ๊ฒŒ ์ดํ•ด ๊ฐ€๋Šฅ -* ๋‚ด๋ฆผ์ฐจ์ˆœ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์€ **reverse**๋ฅผ ์ด์šฉํ•ด์„œ ๋’ค์ง‘์œผ๋ฉด ๋จ - -### ๐Ÿ‡ ๋ฒ„๋ธ” ์ •๋ ฌ - -* ๋‘ ์ธ์ ‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ด์„œ , **์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ณด๋‹ค ํฌ๋ฉด, ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š”** ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Œ ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -#### ์ •๋ ฌ๋ฐฉ๋ฒ• - -* ๋ฐฐ์—ด์˜ 2๊ฐœ์˜ ์•„์ดํ…œ์„ `์„ ํƒ` -* `๋น„๊ต(comparisons)` : **์™ผ์ชฝ**์ด ์˜ค๋ฅธ์ชฝ๋ณด๋‹ค **ํฌ๋ฉด** `๊ตํ™˜(swap)` -* ์˜ค๋ฅธ์ชฝ์œผ๋กœ `์ด๋™`ํ•ด์„œ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค `๋ฐ˜๋ณต` , ์˜ˆ๋ฅผ ๋“ค์–ด 5์™€ 6์„ ๋น„๊ต - - โ‡’ ์™ผ์ชฝ์ด ์˜ค๋ฅธ์ชฝ๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๊ตํ™˜ํ•˜์ง€ ์•Š์Œ - -1. ๊ทธ ๋‹ค์Œ์€ 6๊ณผ 3์„ ๋น„๊ต โ‡’ ๊ตํ™˜ **๊ฒฐ๊ณผ** : 2 5 3 6 1 4 -2. 6๊ณผ 1์„ ๋น„๊ต โ‡’ ๊ตํ™˜ **๊ฒฐ๊ณผ** : 2 5 3 1 6 4 -3. 6๊ณผ 4๋ฅผ ๋น„๊ต โ‡’ ๊ตํ™˜ **๊ฒฐ๊ณผ** : 2 5 3 1 4 6 โ‡’ ์ฒซ๋ฒˆ์งธ ์‚ฌ์ดํด ๋ ๋‘๋ฒˆ์งธ๋„ ์™ผ์ชฝ์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ”๊ฟˆ - -![](https://velog.velcdn.com/images/prettylee620/post/24c2746c-813b-40b2-ab58-faffd2907fc7/image.png) - -#### โœจ ๋ฒ„๋ธ”์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ - -1. **comparisons(๋น„๊ต)** : `N-1` - - N(item์˜ ๋งˆ์ง€๋ง‰ ๋ฒˆํ˜ธ), ๋ฐฐ์—ด์˜ N-1์˜ ์•„์ดํ…œ์„ ๋น„๊ต - - EX. ์•„์ดํ…œ์ด 6๊ฐœ๋ฉด, 5๋ฒˆ ๋น„๊ต -2. **swap(๊ตํ™˜)**: ์ตœ์•…์˜ ๊ฒฝ์šฐ, ๋ชจ๋“  ์•„์ดํ…œ์„ ๊ตํ™˜ํ•ด์•ผ ํ•จ -3. ๊ทธ๋ž˜ํ”„ - -![](https://velog.velcdn.com/images/prettylee620/post/87f518fc-a9d7-465a-a676-504ae5eddbca/image.png) - -#### โœจ ๋ฒ„๋ธ”์ •๋ ฌ ์˜ˆ์ œ 1 - -> ๋ฒ„๋ธ” ์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ํฐ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ๋Š” ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  - -```java -import java.util.ArrayList; -import java.util.Collections; - -public class BubbleSorting { - - public static void main(String[] args){ - ArrayList dataList = new ArrayList(); - dataList.add(9); - dataList.add(2); - dataList.add(4); - dataList.add(8); - dataList.add(1); - - // 9, 7, 1 - for(int index=0; index < dataList.size()-1; index++) { - boolean swap = false; - // 7, 9, 1 - for(int index2 = 0; index2 < dataList.size() - 1 - index; index2++) { - if (dataList.get(index2) > dataList.get(index2 + 1)) { - Collections.swap(dataList, index2, index2 + 1); - // 1, 7, 9 - swap = true; - } - } - } - System.out.println(dataList); - } -} -``` - -#### โœจ ๋ฒ„๋ธ”์ •๋ ฌ ์˜ˆ์ œ 2 - -* ๊ธฐ์กด ์ฝ”๋“œ์˜ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• - -1. BubbleSorting2 - -```java -package sorting; - -import java.util.ArrayList; -import java.util.Collections; - -public class BubbleSorting2 -{ - - public void sort(ArrayList arr) { - ArrayList dataList = new ArrayList(); - dataList = arr; - - for (int index = 0; index < dataList.size() - 1; index++) - { - boolean swap = false; - - for (int index2 = 0; index2 < dataList.size() - 1 - index; index2++) - { - if (dataList.get(index2) > dataList.get(index2 + 1)) - { - Collections.swap(dataList, index2, index2 + 1); - swap = true; - } - } - System.out.println(dataList); - } - } - -} -``` - -2. BublleSorting - -```java -import java.util.ArrayList; - -public class BubbleSorting -{ - - public static void main(String[] args) - { - ArrayList testList = new ArrayList(); - - for (int index = 0; index < 10; index++) - { - testList.add((int)(Math.random() * 100)); - - } - System.out.println(testList); - - BubbleSorting2 bSort = new BubbleSorting2(); - - bSort.sort(testList); - - } - -} -``` - -#### โœจ ๋ฒ„๋ธ”์ •๋ ฌ ์˜ˆ์ œ 3 - -1. ๋ฌธ์ œ๋งํฌ : https://jungol.co.kr/problem/1157?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjJ9 -2. ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.Collections; -import java.util.Scanner; - -public class BubbleSorting3 { - - private ArrayList sort(ArrayList dataList){ - - for(int index=0; index < dataList.size()-1; index++) { - boolean swap = false; - - for(int index2 = 0; index2 < dataList.size() - 1 - index; index2++) { - - if (dataList.get(index2) > dataList.get(index2 + 1)) { - - Collections.swap(dataList, index2, index2 + 1); - swap = true; - } - - } - - for(int i = 0; i dataList = new ArrayList(); - - int n = in.nextInt(); - - for(int i=0; i arr[j+1]) - { - int temp = arr[j]; - arr[j]=arr[j+1]; - arr[j+1]=temp; - - } - - } - - for (int j = 0; j < numlength; j++) { - System.out.printf("%d ", arr[j]); - } - System.out.println(); - - - - - } - - } - -} -``` - -4. ํŒŒ์ด์ฌ ์ฝ”๋“œ - -```java -def bubble_sort(arr): - end = len(arr) - 1 - while end > 0: - last_swap = 0 - for i in range(end): - if arr[i] > arr[i + 1]: - arr[i], arr[i + 1] = arr[i + 1], arr[i] - last_swap = i - end = last_swap - print(arr) -``` - -### ๐Ÿ‡ ์„ ํƒ์ •๋ ฌ - -* ์ „์ฒด **๋ชจ๋“  ์•„์ดํ…œ ์Šค์บ”** -* ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ, ์ด์ค‘์—์„œ **๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒ**ํ•ด ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ , ๊ทธ๋‹ค์Œ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ์•ž์—์„œ ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๋Š” ๊ณผ์ • **๋ฐ˜๋ณต** -* ํ˜„์žฌ **๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ ์ƒ๊ด€์—†์ด** ๋ฌด์กฐ๊ฑด ๋ชจ๋“  ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์œ„์น˜๋ฅผ ๋ฐ”๊ฟˆ -* `๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ`์„ ์„ ํƒ, `๋น„ํšจ์œจ์ ` - -#### โœจ ์ •๋ ฌ๋ฐฉ๋ฒ• - -1. ์ „์ฒด ์•„์ดํ…œ ์ค‘ **๊ฐ€์žฅ ์ž‘์€ ์•„์ดํ…œ์˜ ์œ„์น˜**๋ฅผ ๊ทธ ์œ„์น˜๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ -2. 5๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ํ™•์ธ ํ›„ ๋งจ ์ฒ˜์Œ์€ **5๊ฐ€ ์ œ์ผ ์ž‘๊ธฐ๋•Œ๋ฌธ์—** ์œ„์น˜๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ -3. ๊ทธ ๋‹ค์Œ 2์—์„œ **2๊ฐ€ 5๋ณด๋‹ค ์ž‘์œผ๋‹ˆ๊นŒ** ์œ„์น˜๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ -4. ์ญ‰ ํ•˜๋‹ค๊ฐ€ **1์ด 2๋ณด๋‹ค ์ž‘์œผ๋‹ˆ๊นŒ** ์œ„์น˜๋ฅผ ๋ณ€์ˆ˜ ์ €์žฅ -5. 4๊นŒ์ง€ ํ™•์ธ ํ›„ ์‚ฌ์ดํด์„ ๋๋ƒ„ - - โ‡’ **๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž**๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์•ˆ๋‹ค -6. ๊ทธ ๋‹ค์Œ `swaps(๋ฐ”๊พธ๊ธฐ)` : **๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž(์œ„์น˜**๋ฅผ ์•Œ์ง€!) ๊ทธ๊ฒƒ์„ **์ฒซ ๋ฒˆ์งธ ์•„์ดํ…œ๊ณผ** ๋ฐ”๊ฟˆ -7. ๊ทธ ๋‹ค์Œ ์‚ฌ์ดํด์„ ์ง„ํ–‰์‹œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Œ. **1์€** `์ •๋ ฌ`๋œ ์ˆซ์ž, **์ •๋ ฌ๋˜์ง€ ์•Š์€** ๋ถ€๋ถ„ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ์Œ -8. ์ด๊ฒƒ์„ ๋ฐ˜๋ณต - -![](https://velog.velcdn.com/images/prettylee620/post/d502821c-893b-44ff-99fb-2594dea9ca84/image.png) - -#### โœจ ์„ ํƒ์ •๋ ฌ ์˜ˆ์ œ1 - -```java -import java.util.ArrayList; -import java.util.Collections; - -public class SelectionSortingEx { - - private ArrayList sort(ArrayList dataList){ - int lowest; - for(int stand = 0; stand < dataList.size()-1; stand++){ - lowest = stand; - for(int index = stand+1; index < dataList.size(); index++){ - if(dataList.get(lowest) > dataList.get(index)) { - lowest = index; - } - } - Collections.swap(dataList, lowest, stand); - } - - return dataList; - } - - public static void main(String[] args){ - ArrayList testData = new ArrayList(); - - for(int i=0; i<10; i++){ - testData.add((int)(Math.random()*100)); - } - SelectionSortingEx selection = new SelectionSortingEx(); - System.out.println(selection.sort(testData)); - } -} -``` - -#### โœจ ์„ ํƒ์ •๋ ฌ ์˜ˆ์ œ 2 - -1. ์ •์˜ฌ ๋ฌธ์ œ : https://jungol.co.kr/problem/1146/submission?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjB9 -2. ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.Collections; -import java.util.Scanner; - -public class SelectionSortingEx2 { - - private ArrayList sort(ArrayList dataList){ - int lowest; - for(int stand = 0; stand < dataList.size()-1; stand++){ - lowest = stand; - for(int index = stand+1; index < dataList.size(); index++){ - if(dataList.get(lowest) > dataList.get(index)) { - lowest = index; - } - } - Collections.swap(dataList, lowest, stand); - for(int i = 0; i testData = new ArrayList(); - - int n = in.nextInt(); - - for(int i=0; i arr[j]) { - small = arr[j]; - pos = j; - } - } - int c = arr[i]; - arr[i] = arr[pos]; - arr[pos] = c; - - for (j = 0; j < n; j++) { - System.out.printf("%d ", arr[j]); - } - System.out.printf("\n"); - - } - } - -} - -``` - -4. ํŒŒ์ด์ฌ ์ฝ”๋“œ - -```java -def selection_sort(arr): - for i in range(len(arr) - 1): - min_idx = i - for j in range(i + 1, len(arr)): - if arr[j] < arr[min_idx]: - min_idx = j - arr[i], arr[min_idx] = arr[min_idx], arr[i] - print(arr) -``` - -### ๐Ÿ‡ ์‚ฝ์ž… ์ •๋ ฌ - -* **ํ•„์š”ํ•œ ์•„์ดํ…œ๋งŒ** ์Šค์บ” -* ์„ ํƒ์ •๋ ฌ๋ณด๋‹ค ๋น ๋ฆ„, ํšจ์œจ์  -* ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž… - -โ‡’ ํ•„์š”ํ•œ ๋•Œ๋งŒ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฏ€๋กœ **๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ** ํ›จ์”ฌ ํšจ์œจ์  - -* ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— โ€˜์‚ฝ์ž…โ€™ํ•œ๋‹ค๋Š” ์˜๋ฏธ - - โ‡’ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์ ˆํ•œ ์œ„์น˜์— ๋“ค์–ด๊ฐ€๊ธฐ ์ด์ „์—, **๊ทธ ์•ž๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ `์ •๋ ฌ`๋˜์–ด ์žˆ๋‹ค**๊ณ  ๊ฐ€์ • - -#### ์ •๋ ฌ๋ฐฉ๋ฒ• - -1. ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ์‹œ์ž‘์‹œ, **์™ผ์ชฝ์—** ์ˆซ์ž โ€˜2โ€™๋ณด๋‹ค ํฐ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ - - โ‡’ ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ ๋Š” **์ฒซ ๋ฒˆ์งธ๋Š” ๊ทธ ์ž์ฒด๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค**๊ณ  ํŒ๋‹จ - - ``` - Left > Right - ``` -2. 2์™€ 5 ์ž๋ฆฌ ๋ฐ”๊พธ๊ธฐ `swap` -3. 2๋ฒˆ์งธ ์‚ฌ์ดํด : **6์„ ์„ ํƒ**, ์™ผ์ชฝ์— ๋” ํฐ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ, ์˜ค๋ฅธ์ชฝ์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ์ง„ํ–‰ - - ``` - Left < Right - ``` -4. 3๋ฒˆ์งธ ์‚ฌ์ดํด : **3์„ ์„ ํƒ**, ์™ผ์ชฝ์— ๋” ํฐ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ, - - ``` - Left > Right - ``` -5. 6๊ณผ 3์„ `swap` -6. 3 ์™ผ์ชฝ์— ์žˆ๋Š” 5๋ฅผ ๋น„๊ต(comparisons) - - ``` - Left > Right - ``` -7. 5๊ณผ 3์„ `swap` -8. 3์— ์™ผ์ชฝ์— ์žˆ๋Š” 2๋Š” 3๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋ฐ”๊ฟˆ -9. ๋ฐ˜๋ณต - -> โ— ์‚ฝ์ž… ์ •๋ ฌ์€, ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„ ์›์†Œ๋Š” ํ•ญ์ƒ `์˜ค๋ฆ„์ฐจ์ˆœ`์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ **์‚ฝ์ž…๋  ์œ„์น˜๋ฅผ ์„ ์ •ํ•  ๋•Œ**(์‚ฝ์ž…๋  ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•˜์—ฌ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ์ด๋™ํ•  ๋•Œ) ์‚ฝ์ž…๋  ๋ฐ์ดํ„ฐ๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜์—์„œ ๋ฉˆ์ถ”๋ฉด ๋œ๋‹ค. - -> ๐Ÿ’ก ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ์˜ **์™ผ์ชฝ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ์ด๋ฏธ ์ •๋ ฌ์ด ๋œ ์ƒํƒœ**์ด๋ฏ€๋กœ ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚ฌ๋‹ค๋ฉด, ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ ์‚ดํŽด๋ณผ ํ•„์š” ์—†์ด ์‚ฝ์ž…ํ•˜๋ฉด ๋จ - -#### โœจ ์‚ฝ์ž…์ •๋ ฌ ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.Collections; - -public class InsertionSort { - - public ArrayList sort(ArrayList dataList){ - for(int index=0; index 0; index2--){ - if(dataList.get(index2) < dataList.get(index2-1)){ - Collections.swap(dataList, index2, index2-1); - } - else{ - break; - } - } - } - return dataList; - } - - public static void main(String[] args) { - ArrayList dataList = new ArrayList(); - - for (int i = 0; i < 10; i++) { - dataList.add((int) (Math.random() * 100)); - } - InsertionSort insertion = new InsertionSort(); - System.out.println(insertion.sort(dataList)); - } -} -``` - -#### โœจ ์‚ฝ์ž…์ •๋ ฌ ์ •์˜ฌ ์˜ˆ์ œ - -1. ๋ฌธ์ œ๋งํฌ : https://jungol.co.kr/problem/1158?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjF9 -2. ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.Collections; -import java.util.Scanner; - -public class Main { - - public ArrayList sort(ArrayList dataList){ - for(int index=0; index 0; index2--){ - if(dataList.get(index2) < dataList.get(index2-1)){ - Collections.swap(dataList, index2, index2-1); - } - else{ - break; - } - } - for(int i = 0; i dataList = new ArrayList(); - Scanner in = new Scanner(System.in); - int n = in.nextInt(); - - for (int i = 0; i < n; i++) { - dataList.add(in.nextInt()); - } - Main insertion = new Main(); - insertion.sort(dataList); - } -} -``` - -3. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ - -```java -import java.util.Scanner; - -public class Main { - - public static void main(String[] args) { - // TODO Auto-generated method stub - Scanner scan = new Scanner(System.in); - - int n, i, j; - int arr[] = new int[101]; - - n = scan.nextInt(); - - for (i = 0; i < n; i++) { - arr[i] = scan.nextInt(); - } - - for (i = 1; i < n; i++) { - for (j = i; j > 0; j--) { - if (arr[j] < arr[j - 1]) - { - int c = arr[j]; - arr[j]=arr[j-1]; - arr[j-1]=c; - } - else break; - } - for (j = 0; j < n; j++) { - System.out.printf("%d ", arr[j]); - } - System.out.printf("\n"); - } - } -} -``` - -#### โœจ ์˜ˆ์ œ - -```python -array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] - -for i in range(1, len(array)): - for j in range(i, 0, -1): # j๋ณ€์ˆ˜๊ฐ€ ์ธ๋ฑ์Šค i๋ถ€ํ„ฐ 1๊นŒ์ง€ 1์”ฉ ๊ฐ์†Œํ•˜๋ฉด์„œ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ๋ฒ• - if array[j] < array[j-1]: # ํ•œ ์นธ ์”ฉ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ - array[j], array[j-1] = array[j-1], array[j] - else: # ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜์—์„œ ๋ฉˆ์ถค - break -print(array) -``` - -> ๐Ÿ’ก range์˜ ์„ธ ๋ฒˆ์งธ ๋ณ€์ˆ˜ : range์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” 3๊ฐœ`(start, end, step)`์ด๋‹ค. ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ step์— -1์ด ๋“ค์–ด๊ฐ€๋ฉด start์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ end+1์ธ๋ฑ์Šค๊นŒ์ง€ 1์”ฉ ๊ฐ์†Œํ•œ๋‹ค. - -#### โœจ ์‚ฝ์ž…์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ - -* ์‹œ๊ฐ„๋ณต์žก๋„ : $`O(N^2)`$ - - โ‡’ **2์ค‘ ๋ฐ˜๋ณต๋ฌธ**์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ - -![](https://velog.velcdn.com/images/prettylee620/post/596fedfe-8e75-40a3-a975-08e13cd66aba/image.png) - -โ‡’ ์„ ํƒ์ •๋ ฌ๋ณด๋‹ค ๋นจ๋ผ๋„ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” `๊ฐ™์Œ` - -โ‡’ ์‚ฝ์ž… ์ •๋ ฌ์€ ํ˜„์žฌ ๋ฆฌ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ - -> โœจ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ **๋™์ผํ•œ ์ด์œ **๋Š” ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ณด์ง€๋ง๊ณ , **ํ‰๊ท ** ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ - -## ์‚ฝ์ž… ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ์„ ํƒ ์ •๋ ฌ ์„ธ ๊ฐ€์ง€ ๋น„๊ต - -1. ๋ฒ„๋ธ” ์ •๋ ฌ - -* ๋งจ ์ฒ˜์Œ์— ์žˆ๋Š” ๊ฒƒ์„ ์ €์žฅ ํ›„ ๋‹ค์Œ ์žˆ๋Š” ๊ฒƒ์„ ๋น„๊ต ํ•ด์„œ ๋‹ค์Œ ๊ฒƒ์ด ์ง€๊ธˆ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ์ ๋‹ค๋ฉด ๊ทธ ์ˆ˜๋ฅผ swapํ•จ โ‡’ ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณต - -```java -public static void bubbleSort(int[] array) { - int n = array.length; - for (int i = 0; i < n - 1; i++) { // ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒ - for (int j = 0; j < n - i - 1; j++) { // i๊นŒ์ง€๋Š” ์ด๋ฏธ ์ •๋ ฌ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†์Œ - if (array[j] > array[j + 1]) { // ๋‹ค์Œ ์š”์†Œ๊ฐ€ ํ˜„์žฌ ์š”์†Œ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ตํ™˜ - int temp = array[j]; - array[j] = array[j + 1]; - array[j + 1] = temp; - } - } - } -} -``` - -* ํŒŒ์ด์ฌ ์ฝ”๋“œ - -```java -def bubble_sort(arr): - n = len(arr) - for i in range(n): - for j in range(0, n-i-1): - if arr[j] > arr[j+1]: - arr[j], arr[j+1] = arr[j+1], arr[j] - -# ์‚ฌ์šฉ ์˜ˆ์‹œ -arr = [5, 3, 8, 2, 1, 4] -bubble_sort(arr) -print("๋ฒ„๋ธ” ์ •๋ ฌ ๊ฒฐ๊ณผ:", arr) -``` - -2. ์‚ฝ์ž… ์ •๋ ฌ - -* ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ›‘์–ด๋ด„ ์ผ๋‹จ, **๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒ**ํ•ด ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ , ๊ทธ๋‹ค์Œ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ์•ž์—์„œ ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๋Š” ๊ณผ์ • **๋ฐ˜๋ณต** - -```java -public static void insertionSort(int[] array) { - int n = array.length; - for (int i = 1; i < n; i++) { // ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ - int key = array[i]; // ํ˜„์žฌ ์š”์†Œ๋ฅผ ์ €์žฅ - int j = i - 1; - while (j >= 0 && array[j] > key) { // ์™ผ์ชฝ์˜ ๋ชจ๋“  ์š”์†Œ์™€ ๋น„๊ตํ•˜์—ฌ key๋ณด๋‹ค ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ - array[j + 1] = array[j]; - j--; - } - array[j + 1] = key; // key ๊ฐ’์„ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž… - } -} -``` - -* ํŒŒ์ด์ฌ ์ฝ”๋“œ - -```java -def insertion_sort(arr): - n = len(arr) - for i in range(1, n): - key = arr[i] - j = i - 1 - while j >= 0 and key < arr[j]: - arr[j + 1] = arr[j] - j -= 1 - arr[j + 1] = key - -# ์‚ฌ์šฉ ์˜ˆ์‹œ -arr = [5, 3, 8, 2, 1, 4] -insertion_sort(arr) -print("์‚ฝ์ž… ์ •๋ ฌ ๊ฒฐ๊ณผ:", arr) -``` - -3. ์„ ํƒ ์ •๋ ฌ - -* ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ฐ”๊ฟ”์„œ ํšจ์œจ์  -* ๋‘ ๋ฒˆ์งธ ์ฆ‰, 1์ธ๋ฑ์Šค๋ถ€ํ„ฐ ํ›‘์–ด๋ด„ ์™œ๋ƒ ์ฒซ ๋ฒˆ์งธ๊บผ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋‹ˆ๊นŒ -* ๊ทธ๋ฆฌ๊ณ  ๋‘๋ฒˆ์งธ๊ฐ€ ์™ผ์ชฝ์„ ๋ฐ”๋ผ๋ณด๊ณ  ์™ผ์ชฝ์ด ๋” ํฌ๋‹ค๋ฉด ๋ฐ”๊ฟˆ -* ์ด๋Ÿฐ์‹์œผ๋กœ ์ ์ ˆํ•œ ์œ„์น˜์— ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒƒ์— ์ข‹์Œ - -```java -public static void selectionSort(int[] array) { - int n = array.length; - for (int i = 0; i < n - 1; i++) { // ๋งจ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๋ฏ€๋กœ n-1๊นŒ์ง€๋งŒ ์ˆœํšŒ - int minIndex = i; - for (int j = i + 1; j < n; j++) { // i ์ดํ›„์˜ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์ฐพ์Œ - if (array[j] < array[minIndex]) { - minIndex = j; - } - } - int temp = array[minIndex]; // ์ตœ์†Ÿ๊ฐ’์„ ํ˜„์žฌ ์œ„์น˜๋กœ ์ด๋™ - array[minIndex] = array[i]; - array[i] = temp; - } -} -``` - -* ํŒŒ์ด์ฌ ์ฝ”๋“œ - -```java -def selection_sort(arr): - n = len(arr) - for i in range(n): - min_index = i - for j in range(i+1, n): - if arr[j] < arr[min_index]: - min_index = j - arr[i], arr[min_index] = arr[min_index], arr[i] - -# ์‚ฌ์šฉ ์˜ˆ์‹œ -arr = [5, 3, 8, 2, 1, 4] -selection_sort(arr) -print("์„ ํƒ ์ •๋ ฌ ๊ฒฐ๊ณผ:", arr) -``` diff --git a/developLog/algorithm-datastructure/algorithm/undefined-4.md b/developLog/algorithm-datastructure/algorithm/undefined-4.md deleted file mode 100644 index 30921ed..0000000 --- a/developLog/algorithm-datastructure/algorithm/undefined-4.md +++ /dev/null @@ -1,386 +0,0 @@ -# ๋™์  ๊ณ„ํš๋ฒ•๊ณผ ๋ถ„ํ• ์ •๋ณต - -## 1. ๋™์  ๊ณ„ํš๋ฒ•(DP) - -> ๋™์  ๊ณ„ํš๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ๋Š”, ์šฐ์„  ์ž‘์€ ๋ฌธ์ œ๋ถ€ํ„ฐ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ž‘์€ ๋ฌธ์ œ๋“ค์„ ํ’€์–ด๋‚˜๊ฐ€๋‹ค๋ณด๋ฉด ์ด์ „์— ๊ตฌํ•ด๋‘” ๋” ์ž‘์€ ๋ฌธ์ œ๋“ค์ด ํ™œ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ฐพ์•˜์„ ๋•Œ **์ ํ™”์‹**์„ ๋„์ถœํ•ด๋‚ด์–ด ๋™์  ๊ณ„ํš๋ฒ•์„ ์ ์šฉ์‹œํ‚ค์ž - -### ๐ŸŒ ๊ฐœ๋… - -> ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•, ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ์ €์žฅํ•˜๊ณ  ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ค‘์  - -* ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•œ ํ›„, ํ•ด๋‹น ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ํ™œ์šฉํ•ด์„œ, ๋ณด๋‹ค ํฐ ํฌ๊ธฐ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ, ์ตœ์ข…์ ์œผ๋กœ ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* **์ƒํ–ฅ์‹ ์ ‘๊ทผ๋ฒ•**์œผ๋กœ, ๊ฐ€์žฅ ์ตœํ•˜์œ„ ํ•ด๋‹ต์„ ๊ตฌํ•œ ํ›„, ์ด๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ’์„ ์ด์šฉํ•ด์„œ ์ƒ์œ„ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๊ฐ€๋Š” ๋ฐฉ์‹ -* ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ, ๋‹จ ํ•œ๋ฒˆ๋งŒ ํ’€๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - * ์ฆ‰, **๋˜‘๊ฐ™์€ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค.** ์‹คํ–‰์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ˆ˜ํ•™์  ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* `Memoization` ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•จ - -### ๐ŸŒ ์ ‘๊ทผ ๋ฐฉ์‹ - -* ์ปค๋‹ค๋ž€ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž‘๊ฒŒ ์ชผ๊ฐœ์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๋ถ„ํ•  ์ •๋ณต๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ **๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ์ค‘๋ณต ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ฐจ์ด์ **์ด ์กด์žฌํ•œ๋‹ค. -* ์ฆ‰, ๋™์  ๊ณ„ํš๋ฒ•์€ ๊ฐ„๋‹จํ•œ ์ž‘์€ ๋ฌธ์ œ๋“ค ์†์—์„œ `๊ณ„์† ๋ฐ˜๋ณต๋˜๋Š” ์—ฐ์‚ฐ`์„ ํ™œ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ - -### ๐ŸŒ ์ข…๋ฅ˜ - -1. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด -2. ๋ฐฐ๋‚ญ ๋ฌธ์ œ -3. ์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด -4. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ -5. ์ตœ์†Œ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ -6. ๋งคํŠธ๋ฆญ์Šค ์ฒด์ธ ๊ณฑ์…ˆ -7. ํ–‰๋ ฌ ๊ฒฝ๋กœ ๋ฌธ์ œ - -### ๐ŸŒ Memoization ๊ธฐ๋ฒ•์ด๋ž€? - -* Memoization (๋ฉ”๋ชจ์ด์ œ์ด์…˜) ์ด๋ž€: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ, ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ „์ฒด ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ  -* ๋ฌธ์ œ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐค ๋•Œ, ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์ค‘๋ณต๋˜์–ด, ์žฌํ™œ์šฉ๋จ - - * ์˜ˆ: ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด 1 1 2 3 5 8 โ€ฆ. 1 1๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋’ค์˜ ๋ชจ๋“  ํ•ญ์€ ๋ฐ”๋กœ ์•ž ๋‘ํ•ญ์˜ ํ•ฉ์˜ ์ˆ˜์—ด - - > ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์—์„œ ์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ’€ ๊ฒฝ์šฐ, ๊ฐ™์€ ์—ฐ์‚ฐ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - > - > ์ด๋•Œ, `๋ฉ”๋ชจ์ด์ œ์ด์…˜`์„ ํ†ตํ•ด **๊ฐ™์€ ์ž‘์—…์„ ๋˜ํ’€์ด ํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•˜๋ฉด ํšจ์œจ์ **์ด๋‹ค. - - * return f(n) = f(n-1) + f(n-2) -* ์ฝ”๋“œ\[์žฌ๊ท€] : ์‹œ๊ฐ„ ๋ณต์žก๋„ `O(2^n)` - -```java -import java.util.Scanner; - -public class Fibonacci { - private static int fibonacci(int n){ - if(n <= 1) return n; - return fibonacci(n - 1) + fibonacci(n - 2); - } - - public static void main(String[] args){ - Scanner in = new Scanner(System.in); - int n = in.nextInt(); - - int result = fibonacci(n); - System.out.printf("ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ %d๋ฒˆ์งธ ๊ฐ’ : %d", n, result); - } -} -``` - -* ์ฝ”๋“œ 2\[๋™์  ๋ฐฉ๋ฒ• ์ด์šฉ] : ์‹œ๊ฐ„ ๋ณต์žก๋„ `O(N)` - -```java -public class Dynamic { - - public int dynamicFunc(int data){ - Integer[] cache = new Integer[data+1]; - cache[0] = 0; - cache[1] = 1; - for(int index=2; index ๋ถ„ํ•  ์ •๋ณต์€ ์ฃผ๋กœ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ค‘์  - -* ๋ฌธ์ œ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋‚˜๋ˆ„์–ด์„œ ๊ฐ๊ฐ์„ ํ’€๋ฉด์„œ ๋‹ค์‹œ ํ•ฉ๋ณ‘ํ•˜์—ฌ ๋ฌธ์ œ์˜ ๋‹ต์„ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* ํ•˜์–‘์‹ ์ ‘๊ทผ๋ฒ•์œผ๋กœ, ์ƒ์œ„์˜ ํ•ด๋‹ต์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด, ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ํ•˜์œ„์˜ ํ•ด๋‹ต์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹ - * ์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ -* ๋ฌธ์ œ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐค ๋•Œ, ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š์Œ - * ์˜ˆ: ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํ€ต ์ •๋ ฌ ๋“ฑ - -### ๐ŸŒ Merge Sort\[๋ณ‘ํ•ฉ ์ •๋ ฌ] - -๊ด€๋ จ ๋™์ž‘ ๋ฐฉ๋ฒ•์€ [๋…ธ์…˜](https://incredible-gem-98e.notion.site/8-22-248bec70cb274c17b0eee9199ab7011e?pvs=4)์—.. - -#### ๊ฐœ๋… - -1. ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜๋กœ, **ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ํ•ด๊ฒฐ**ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ -2. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ๊ฑฐ์˜ `O(n log n)`์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์— ๋งŽ์ด ์‚ฌ์šฉ -3. ํ•ฉ๋ณ‘ ์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋‚˜ ์•ˆ์ •์ ์ธ ์ •๋ ฌ์„ ์›ํ•  ๋•Œ ์ฃผ๋กœ ์„ ํƒ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -#### ๋™์ž‘๋ฐฉ๋ฒ• - -> ์•„๋ž˜์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ž‘์€ ๋ฐฐ์—ด๋ถ€ํ„ฐ ์ •๋ ฌํ•˜์—ฌ ํ•ฉ์ณ๋‚˜๊ฐ€๋ฉด, ์ „์ฒด ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. `ํ•ฉ๋ณ‘ ์ •๋ ฌ`์€ **์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ**๊ฐ€ ๋˜๋ฏ€๋กœ, ์•„๋ž˜ ์„ธ ๋‹จ๊ณ„๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด ๋‚ด๋‚˜๊ฐ€๋ฉฐ ์ •๋ ฌ์ด ์™„์„ฑ๋œ๋‹ค. - -1. **๋ถ„ํ• (Divide)** : ์ •๋ ฌํ•  ๋ฐฐ์—ด์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ์ด๋ฅผ ๊ณ„์†ํ•ด์„œ ์ž‘์€ ๋ฐฐ์—ด์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ถ„ํ•  -2. **์ •๋ณต(Conquer)** : ๋ถ„ํ• ๋œ ์ž‘์€ ๋ฐฐ์—ด์„ ์ •๋ ฌ, ๋งŒ์•ฝ **๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ด๊ฑฐ๋‚˜ 0์ด๋ผ๋ฉด ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ** -3. **ํ•ฉ๋ณ‘(Merge)** : ์ •๋ ฌ๋œ ์ž‘์€ ๋ฐฐ์—ด๋“ค์„ ํ•˜๋‚˜๋กœ ํ•ฉ๋ณ‘ํ•œ๋‹ค. ์ด๋•Œ, ๋‘ ๋ฐฐ์—ด์„ ๋น„๊ตํ•˜์—ฌ ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์น˜๋Š”๋ฐ, ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ณ‘ํ•ฉ - -```java -import java.util.ArrayList; - -public class MergeSort { - - private ArrayList mergeFunc(ArrayList leftArr, ArrayList rightArr) { - - ArrayList mergedList = new ArrayList(); - int leftPoint = 0; - int rightPoint = 0; - - // CASE 1 : left/right๊ฐ€ ๋‘˜ ๋‹ค ์žˆ์„ ๋•Œ - while(leftArr.size() > leftPoint && rightArr.size() > rightPoint){ - //์ž๋ฆฌ๋ฐ”๊ฟˆ์ด ์ผ์–ด๋‚˜๋Š” ์กฐ๊ฑด - if(leftArr.get(rightPoint) > rightArr.get(rightPoint)){ - mergedList.add(rightArr.get(rightPoint)); - rightPoint += 1; - } - else{ - mergedList.add(leftArr.get(leftPoint)); - leftPoint += 1; - } - } - - // CASE 2 : right ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ - while(leftArr.size() > leftPoint){ - mergedList.add(leftArr.get(leftPoint)); - leftPoint += 1; - } - - // CASE 3 : left ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ - while(rightArr.size() > rightPoint){ - mergedList.add(rightArr.get(rightPoint)); - rightPoint += 1; - } - - return mergedList; - } - - public ArrayList margeSplitFunc(ArrayList arrayList) { - if(arrayList.size() <= 1){return arrayList;} - // ์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๋Š๋‚Œ - int medium = arrayList.size()/2; - - ArrayList leftArr = new ArrayList(); - ArrayList rightArr = new ArrayList(); - - leftArr = new ArrayList(arrayList.subList(0, medium)); - rightArr = new ArrayList(arrayList.subList(medium, arrayList.size())); - - // ์ •๋ ฌํ•˜๋Š” ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ - return this.mergeFunc(leftArr, rightArr); - } - - public static void main(String[] args){ - ArrayList testData = new ArrayList<>(); - - for(int index=0; index<100; index++){ - testData.add((int)(Math.random()*100)); - } - - System.out.println(testData); - MergeSort mergeSort = new MergeSort(); - System.out.println(mergeSort.margeSplitFunc(testData)); - } -} -``` - -#### ํ•ฉ๋ณ‘ ์ •๋ ฌ ํŠน์ง• - -1. ์•ˆ์ •์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋™์ผํ•œ ๊ฐ’์˜ ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. -2. ์™ธ๋ถ€ ์ •๋ ฌ์— ์ ํ•ฉ : ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋‘ ์˜ฌ๋ฆฌ๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ -3. ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ•„์š” : ๋ฐฐ์—ด์„ ๋ถ„ํ• ํ•˜๊ณ  ํ•ฉ์น˜๋Š” ๊ณผ์ •์—์„œ ์ž„์‹œ ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. -4. ํ‰๊ท  ๋ฐ ์ตœ์•… ์‹œ๊ฐ„ ๋ณต์žก๋„: `O(n log n)` -5. ์ตœ์„ ์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„: `O(n log n)` -6. ์ •๋ ฌ๋œ ์ƒํƒœ์—์„œ๋„ ํšจ์œจ์ : ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ์—๋„ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ - -### ๐ŸŒ ํ€ต ์ •๋ ฌ(QuickSort) - -#### ํ€ต์ •๋ ฌ์˜ ์ •์˜ - -* ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -#### ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ ์„ค์ •, **๊ทธ ๊ธฐ์ค€๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฉด** ? - -* ๊ธฐ์ค€์„ ์„ค์ •ํ•œ ๋‹ค์Œ ํฐ ์ˆ˜์™€ ์ž‘์€์ˆ˜๋ฅผ ๊ตํ™˜ํ•œ ํ›„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹ -* `ํ”ผ๋ฒ—`์ด ์‚ฌ์šฉ - - โ‡’ ํฐ ์ˆซ์ž์™€ ์ž‘์€ ์ˆซ์ž ๊ตํ™˜์‹œ, ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ **๊ธฐ์ค€** - - โ‡’ ํ€ธ ์ •๋ ฌ์„ **์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „** ํ”ผ๋ฒ—์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ• ๊ฒƒ์ธ์ง€ ๋ฏธ๋ฆฌ ๋ช…์‹œ ํ•ด์•ผ ํ•จ -* ํ”ผ๋ฒ—๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋น„๊ต ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ, ์‹œ๊ฐ„ ๋ฉด์—์„œ๋Š” ์กฐ๊ธˆ ๋น„ํšจ์œจ์  but, ์ง๊ด€์ ์ด๊ณ  ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฝ๋‹ค - -#### ํ˜ธ์–ด ๋ถ„ํ•  ๋ฐฉ์‹ - -* ์žฌ๊ท€ ํ•จ์ˆ˜ ๋™์ž‘์›๋ฆฌ๊ฐ€ ๊ฐ™์Œ - - โ‡’ **์ข…๋ฃŒ์กฐ๊ฑด**์ด ์žˆ์–ด์•ผ ํ•จ : ํ˜„์žฌ ๋ฆฌ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ - -1. ๋ฆฌ์ŠคํŠธ์—์„œ **์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ**๋ฅผ ํ”ผ๋ฒ—์œผ๋กœ ์ •ํ•œ๋‹ค -2. ํ”ผ๋ฒ— ์„ค์ •ํ•œ ๋’ค์—๋Š” `์™ผ์ชฝ`์—์„œ๋ถ€ํ„ฐ ํ”ผ๋ฒ—๋ณด๋‹ค **ํฐ** ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ , `์˜ค๋ฅธ์ชฝ`์—์„œ๋ถ€ํ„ฐ ํ”ผ๋ฒ—๋ณด๋‹ค **์ž‘์€** ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Œ -3. ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ **์œ„์น˜๋ฅผ ์„œ๋กœ ๊ตํ™˜** - -#### ํ€ต ์ •๋ ฌ ๋ฐฉ์‹(ํ˜ธ์–ด ๋ถ„ํ•  ๋ฐฉ์‹ ์˜ˆ์‹œ) - -โœจ **1ํŒŒํŠธ** - -1. ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผ๋ฒ—์œผ๋กœ ์„ค์ •ํ•˜๋ฏ€๋กœ ํ”ผ๋ฒ—์€ โ€˜5โ€™ ์ดํ›„์— `์™ผ์ชฝ`์—์„œ๋ถ€ํ„ฐ โ€˜5โ€™๋ณด๋‹ค **ํฐ** ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๋ฏ€๋กœ โ€˜7โ€™์ด ์„ ํƒ, `์˜ค๋ฅธ์ชฝ`์—์„œ๋ถ€ํ„ฐ โ€˜5โ€™๋ณด๋‹ค **์ž‘์€** ๋ฐ์ดํ„ฐ๊ฐ€ ์„ ํƒ๋˜๋ฏ€๋กœ โ€˜4โ€™๊ฐ€ ์„ ํƒ โ‡’ ๋‘ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜ ์„œ๋กœ ๋ณ€๊ฒฝ - -![](https://velog.velcdn.com/images/prettylee620/post/c6188d6b-7b23-4eb4-84da-ed98f23dbc0f/image.png) - -2. ๊ทธ๋‹ค์Œ ๋‹ค์‹œ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ ์ฐพ๊ณ , ๊ทธ ๋’ค ๋‘ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ณ€๊ฒฝ - -![](https://velog.velcdn.com/images/prettylee620/post/9460cdf3-6db0-4f43-8534-9d5521e54c05/image.png) - -3. ๊ทธ ๋‹ค์Œ ๋‹ค์‹œ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค. - 1. ๋‹จ, ํ˜„์žฌ ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฐพ๋Š” ๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฐพ๋Š” ๊ฐ’์˜ **์œ„์น˜๊ฐ€ ์„œ๋กœ ์—‡๊ฐˆ๋ฆด ์ˆ˜**๋„ ์žˆ๋‹ค. - 2. ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ’์ด ์—‡๊ฐˆ๋ฆฐ ๊ฒฝ์šฐ์—๋Š” โ€˜์ž‘์€ ๋ฐ์ดํ„ฐโ€™์™€ โ€˜ํ”ผ๋ฒ—โ€™์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. - 3. ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ โ€˜1โ€™๊ณผ ํ”ผ๋ฒ—์ธ โ€˜5โ€™์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ `๋ถ„ํ•  ์ˆ˜ํ–‰` - -![](https://velog.velcdn.com/images/prettylee620/post/f253a992-05ae-47a9-9ef7-15b66c592f55/image.png) - -4. `๋ถ„ํ•  ์™„๋ฃŒ` : ์ด์™€ ๊ฐ™์ด ํ”ผ๋ฒ—์ด ์ด๋™ํ•œ ์ƒํƒœ์—์„œ ์™ผ์ชฝ ๋ฆฌ์ŠคํŠธ์™€ ์˜ค๋ฅธ์ชฝ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ดํŽด๋ณด์ž - 1. ์ด์ œ โ€˜5โ€™ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ โ€˜5๋ณด๋‹ค ์ž‘๊ณ , ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” โ€˜5โ€™๋ณด๋‹ค ํฌ๋‹ค๋Š” ํŠน์ง• - 2. `๋ถ„ํ• ` ํ˜น์€ `ํŒŒํ‹ฐ์…˜` : ํ”ผ๋ฒ—์˜ **์™ผ์ชฝ**์—๋Š” **ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ**๊ฐ€ ์œ„์น˜, ํ”ผ๋ฒ—์˜ **์˜ค๋ฅธ์ชฝ**์—๋Š” **ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ**๊ฐ€ ์œ„์น˜ - -![](https://velog.velcdn.com/images/prettylee620/post/18a068bd-ea22-4fba-9bbd-60456859b915/image.png) - -โœจ 2**ํŒŒํŠธ** - -์™ผ์ชฝ ๋ฆฌ์ŠคํŠธ์—์„œ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ •๋ ฌ ์ง„ํ–‰, ๊ตฌ์ฒด์ ์ธ ์ •๋ ฌ ๊ณผ์ •์€ ๋™์ผ - -![](https://velog.velcdn.com/images/prettylee620/post/e72f5399-4447-4641-a155-b63857c949d7/image.png) - -โœจ 3**ํŒŒํŠธ** - -์˜ค๋ฅธ์ชฝ ๋ฆฌ์ŠคํŠธ์—์„œ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ •๋ ฌ ์ง„ํ–‰, ๊ตฌ์ฒด์ ์ธ ์ •๋ ฌ ๊ณผ์ •์€ ๋™์ผ - -![](https://velog.velcdn.com/images/prettylee620/post/a0d80f58-ae56-4345-aacc-f5906b461675/image.png) - -#### ํ€ต ์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ - -* ํ‰๊ท ์  ์‹œ๊ฐ„๋ณต์žก๋„ : $`O(NlogN)`$ -* ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„ : $`O(N^2)`$ - - โ‡’ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์ž‘๋™ -* ์•ž์— ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์˜ ๋น„ํ•ด ์—„์ฒญ ๋น ๋ฅธ ํŽธ -* ๋ถ„ํ• ์ด ์ด๋ฃจ์–ด์ง€๋Š” ํšŸ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๊ฐ์†Œ - -```java - -package Danymic; - -import java.util.Scanner; - -public class QuickSortEx { - - public static void main(String[] args){ - Scanner in = new Scanner(System.in); - int arr[] = {3, 33, 38, 5, 2, 7, 15, 36, 26, 27, 2}; - - System.out.println("์ •๋ ฌ ์ „ :"+arr); - - System.out.println("์ •๋ ฌ ํ›„"); - quickSort(arr, 0, arr.length-1); - } - - public static void quickSort(int[] array, int left, int right) { - if(left >= right) return; - - //๋ถ„ํ•  - int pivot = partition(array, left, right); - - // ์ž๊ธฐ ์ž์‹ ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋ถ€๋ฆ„ - quickSort(array, left, pivot); - quickSort(array, pivot+1, right); - } - - private static int partition(int[] array, int left, int right) { - int pivot = array[left]; - int i = left, j= right; - while (i < j){ - // ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ j๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฐพ์Œ - while(pivot < array[j]){ - j--; - } - while(i= array[i]){ - i++; - } - swap(array, i, j); - } - array[left] = array[i]; - array[i] = pivot; - - return i; - - } - - private static void swap(int[] array, int i, int j) { - int tmp = array[i]; - array[i] = array[j]; - array[j] = tmp; - } -} -``` - -#### arrayList๋ฅผ ์ด์šฉํ•œ ๋™์ž‘์›๋ฆฌ - -```java -import java.util.ArrayList; -import java.util.Arrays; - -public class QuickSort { - public ArrayList sort(ArrayList dataList) { - if (dataList.size() <= 1) { - return dataList; - } - int pivot = dataList.get(0); - - ArrayList leftArr = new ArrayList(); - ArrayList rightArr = new ArrayList(); - - for (int index = 1; index < dataList.size(); index++) { - if (dataList.get(index) > pivot) { - rightArr.add(dataList.get(index)); - } else { - leftArr.add(dataList.get(index)); - } - } - - - ArrayList mergedArr = new ArrayList(); - mergedArr.addAll(sort(leftArr)); - mergedArr.addAll(Arrays.asList(pivot)); - mergedArr.addAll(sort(rightArr)); - - return mergedArr; - } - - public static void main(String[] args) { - ArrayList testData = new ArrayList(); - - for (int index = 0; index < 100; index++) { - testData.add((int)(Math.random() * 100)); - } - QuickSort qSort = new QuickSort(); - System.out.println(qSort.sort(testData)); - } -} -``` - -### ๐ŸŒ ์ข…๋ฅ˜ - -1. ํ•ฉ๋ณ‘ ์ •๋ ฌ -2. ํ€ต ์ •๋ ฌ -3. ๊ฑฐ๋“ญ์ œ๊ณฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ -4. ๋ณ‘๋ ฌ ํ–‰๋ ฌ ๊ณฑ์…ˆ -5. ์ตœ๊ทผ์ ‘ ์  ์Œ ์ฐพ๊ธฐ -6. ์ตœ๋Œ€ ๋ถ€๋ถ„๋ฐฐ์—ด ๋ฌธ์ œ - -### ๐ŸŒ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์  - -* ๊ณตํ†ต์  - * ๋ฌธ์ œ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ, ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ•  -* ์ฐจ์ด์  - * ๋™์  ๊ณ„ํš๋ฒ• - * ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์ค‘๋ณต๋˜์–ด, ์ƒ์œ„ ๋ฌธ์ œ ํ•ด๊ฒฐ ์‹œ ์žฌํ™œ์šฉ๋จ - * `Memoization` ๊ธฐ๋ฒ• ์‚ฌ์šฉ (๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ํ•ด๋‹ต์„ ์ €์žฅํ•ด์„œ ์žฌํ™œ์šฉํ•˜๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ) - * ๋ถ„ํ•  ์ •๋ณต - * ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š์Œ - * `Memoization` ๊ธฐ๋ฒ• ์‚ฌ์šฉ ์•ˆํ•จ diff --git a/developLog/algorithm-datastructure/algorithm/undefined.md b/developLog/algorithm-datastructure/algorithm/undefined.md deleted file mode 100644 index 39b6515..0000000 --- a/developLog/algorithm-datastructure/algorithm/undefined.md +++ /dev/null @@ -1,350 +0,0 @@ -# ๊ทธ๋ฆฌ๋”” - - [๊ทธ๋ฆฌ๋”” ์ •๋ฆฌ ๋…ธ์…˜ ๋ฒ„์ „](https://incredible-gem-98e.notion.site/02-Big-O-e6f9ea423f4a42d183b99a138d645913) - -
- -### ๐Ÿ“š ๋‹น์žฅ ์ข‹์€ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -*** - -* ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• -* `ํƒ์š•๋ฒ•` ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ -* ์ฐฝ์˜๋ ฅ์„ ์š”๊ตฌ, ๋‹จ์ˆœํžˆ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์•„ ๋ณด์ด๋Š” ๊ฒƒ๋งŒ ์„ ํƒํ•ด๋„ ok -* ์ˆœ๊ฐ„ ๊ฐ€์žฅ ์ข‹์•„ ๋ณด์ด๋Š” ๊ฒƒ์„ ์„ ํƒ, ํ˜„์žฌ์˜ ์„ ํƒ์ด **๋‚˜์ค‘์— ๋ฏธ์น  ์˜ํ–ฅ ๊ณ ๋ ค No!** -* **์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜**๊ณผ ์ง์„ ์ด๋ค„์„œ ์ถœ์ œ โ‡’ โ€˜๊ฐ€์žฅ ํฐ ์ˆœ์„œ๋Œ€๋กœโ€™์™€ ๊ฐ™์€ ๊ธฐ์ค€ ์ œ์‹œ - -#### ๐Ÿ“ ์ฝ”ํ…Œ์—์„œ ๋งŒ๋‚˜๊ฒŒ ๋  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜• - -1. ์‚ฌ์ „์— ์™ธ์šฐ๊ณ  ์žˆ์ง€ ์•Š์•„๋„ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ฌธ์ œ ์œ ํ˜•์ด๋ผ๋Š” ํŠน์ง• : **๊ทธ๋ฆฌ๋””** -2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ : **์ •๋ ฌ, ์ตœ๋‹จ๊ฒฝ๋กœ** ๋“ฑ - -\ -\ - - -#### ๐Ÿ“ ์˜ˆ์‹œ1 ๊ฑฐ์Šค๋ฆ„๋ˆ - -*** - -๊ฐ€์ •) ์นด์šดํ„ฐ์— ๊ฑฐ์Šค๋ฆ„๋ˆ์œผ๋กœ ์‚ฌ์šฉํ•  500, 100, 50, 10์›์งœ๋ฆฌ ๋™์ „์ด ๋ฌดํ•œ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •์‹œ ์†๋‹˜์—๊ฒŒ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผ ํ•  N์›์ผ ๋•Œ, ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผ ํ•  ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋Š”?(๋‹จ, ๊ฑฐ์Šฌ๋Ÿฌ์ค˜์•ผ ํ•  ๋ˆ **N์€ ํ•ญ์ƒ 10์˜ ๋ฐฐ์ˆ˜**) - -A : **โ€˜๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐโ€™** ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ๊ฒƒ - -1. ๊ฐ€์ •) ๋‚จ์€๋ˆ **N์›** : 1260์› -2. 500์› ์งœ๋ฆฌ 2๊ฐœ๋ฅผ ์คŒ - - ๋‚จ์€ ๋ˆ : 260์› -3. 100์›์งœ๋ฆฌ 2๊ฐœ๋ฅผ ์คŒ - - ๋‚จ์€ ๋ˆ : 60์› -4. 50์›์งœ๋ฆฌ 1๊ฐœ๋ฅผ ์คŒ - - ๋‚จ์€ ๋ˆ : 10์› -5. 10์›์งœ๋ฆฌ 1๊ฐœ๋ฅผ ์คŒ โ‡’ **๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜ : 6๊ฐœ** - -* ์ฐธ๊ณ ) **ํŒŒ์ด์ฌ ๊ธฐํ˜ธ** - * `**` : ๊ฑฐ๋“ญ ์ œ๊ณฑ - * `/` : ๋‚˜๋ˆ„๊ธฐ - * `//` : ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ ํ›„ ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ , ์ •์ˆ˜ ๋ถ€๋ถ„์˜ ์ˆ˜๋งŒ ๊ตฌํ•จ - * `%` : ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ ํ›„ ๋ชซ์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•จ - -```python -n = 1260 -int(input()) -count = 0 - -# ํฐ ๋‹จ์œ„์˜ ํ™”ํ๋กœ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธ -coin_types = [500,100,50,10] - -for i in coin_types: # ํ™”ํ์˜ ์ข…๋ฅ˜๋งŒํผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰, **for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ(๋˜๋Š” ํŠœํ”Œ, ๋ฌธ์ž์—ด)** - count += (n//coin_types[i]) # ํ™”ํ๋กœ ๋ถ€ํ„ฐ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋™์ „์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ - n %= coin_types[i] - -print(count) -``` - -**๐ŸŽ ์˜ˆ์‹œ1์˜ ์‹œ๊ฐ„๋ณต์žก๋„** - -* ๋ฐ˜๋ณต๋ฌธ์—์„œ ํ™”ํ์˜ ์ข…๋ฅ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™”ํ์˜ ์ข…๋ฅ˜๊ฐ€ K๊ฐœ๋ผ๊ณ  ๊ฐ€์ •์‹œ : `O(K)` -* ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ์–ด์•ผ ํ•  ๋ˆ N์€ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†์Œ -* ์ฆ‰, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” **๋™์ „์˜ ์ด ์ข…๋ฅ˜**๋งŒ ์˜ํ–ฅ, ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผ ํ•˜๋Š” ๊ธˆ์•ก๊ณผ๋Š” ๋ฌด๊ด€ - -#### ๐ŸŽ‹ ์œ ์‚ฌ๋ฌธ์ œ - -[๋ฐฑ์ค€ 5585๋ฒˆ: ๊ฑฐ์Šค๋ฆ„๋ˆ](https://www.acmicpc.net/problem/5585) - -```python -N = 1000 - int(input()) -count = 0 - -coin_types = [500, 100, 50, 10, 5, 1] - -for i in range(6): - count += (N//coin_types[i]) - N %= coin_types[i] - -print(count) -``` - -### ๐Ÿ“š ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •๋‹น์„ฑ - -*** - -* ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ ์šฉ ๋ถˆ๊ฐ€ -* BUT, ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์—์„œ โ€˜๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐโ€™ ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด, `ํƒ์š•์ `์œผ๋กœ ๋ฌธ์ œ ์ ‘๊ทผ์‹œ ์ •ํ™•ํ•œ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์„์‹œ **ํšจ๊ณผ์ , ์ง๊ด€์ ** -* ํ•ด๋ฒ•์„ ์ฐพ์„ ์‹œ ํ•ด๋ฒ•์ด `์ •๋‹นํ•œ์ง€` ๊ฒ€ํ†  - -> ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ๋ฅผ ๊ทธ๋ฆฌ๋“œ ๋ฌธ์ œ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ **์ด์œ ** : ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™์ „ ์ค‘์—์„œ ํฐ ๋‹จ์œ„๊ฐ€ ํ•ญ์ƒ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐฐ์ˆ˜์ด๋ฏ€๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ๋™์ „๋“ค์„ ์ข…ํ•ฉํ•ด ๋‹ค๋ฅธ ํ•ด๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ - -* ๋Œ€๋ถ€๋ถ„์˜ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์ด์ฒ˜๋Ÿผ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ •๋‹นํ•œ์ง€ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๋‹ต ๋„์ถœ ๊ฐ€๋Šฅ -* ๋งŒ์•ฝ, ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์ด๋‚˜ ๋™์ „(ํ™”ํ)์˜ ๋‹จ์œ„์ฒ˜๋Ÿผ ์„œ๋กœ ๋ฐฐ์ˆ˜ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ, `๋ฌด์ž‘์œ„`์‹œ ํ•ด๊ฒฐ ๋ถˆ๊ฐ€ - -๐Ÿ’ก **TIP) ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์‹œ ๋ฌธ์ œ ์œ ํ˜• ํŒŒ์•…** - -1. ๋ฐ”๋กœ ๋ฌธ์ œ ์œ ํ˜• ํŒŒ์•… ์–ด๋ ค์šธ์‹œ, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜์‹ฌํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” `ํƒ์š•์ ์ธ ๋ฐฉ๋ฒ•`์ด ์กด์žฌํ•˜๋Š”์ง€ ๊ณ ๋ฏผ -2. ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋ฉด, ์ดํ›„์— ๊ณต๋ถ€ํ•  ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‚˜ ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ์ง€ ๊ณ ๋ฏผ - -### ๐Ÿ“š ์‹ค์ „๋ฌธ์ œ) ํฐ ์ˆ˜์˜ ๋ฒ•์น™ - -*** - -* ๋‹ค์–‘ํ•œ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ ์ฃผ์–ด์ง„ ์ˆ˜๋“ค์„ M๋ฒˆ ๋”ํ•˜์—ฌ **๊ฐ€์žฅ ํฐ ์ˆ˜**๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์น™ -* ๋‹จ, ๋ฐฐ์—ด์˜ ํŠน์ •ํ•œ \*\*์ธ๋ฑ์Šค(๋ฒˆํ˜ธ)\*\*์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๊ฐ€ ์—ฐ์†ํ•ด์„œ K๋ฒˆ์„ ์ดˆ๊ณผํ•˜์—ฌ ๋”ํ•ด์งˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ํŠน์ง• - -> ์ˆœ์„œ๋Œ€๋กœ 2, 4, 5, 4, 6์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ์žˆ์„ ์‹œ, M์ด 8์ด๊ณ , K๊ฐ€ 3์ด๋ผ ๊ฐ€์ • - -ํŠน์ •ํ•œ ์ธ๋ฑ์Šค ์ˆ˜๊ฐ€ **์—ฐ์†ํ•ด์„œ 3๋ฒˆ๊นŒ์ง€๋งŒ** ๋”ํ•ด ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํฐ ์ˆ˜์˜ ๋ฒ•์น™์— ๋”ฐ๋ผ 6 + 6 + 6 + **5** + 6 + 6 + 6 + **5**์ธ 46์ด ๋จ(์—ฐ์†๋˜์ง€ ์•Š๊ฒŒ **์ค‘๊ฐ„์— 5๋ฅผ ๋„ฃ๊ณ ** ๊ทธ ๋‹ค์Œ ๋‹ค์‹œ 6์œผ๋กœ 3๋ฒˆ ๋ฐ˜๋ณต) - -* ๋‹จ, `์„œ๋กœ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค`์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๊ฐ€ **๊ฐ™์€ ์ˆ˜** ์ผ ๊ฒฝ์šฐ์—๋Š”, **์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ**ํ•œ๋‹ค. - -> ์ˆœ์„œ๋Œ€๋กœ 3, 4, 3, 4, 3์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์‹œ, M์ด 7์ด๊ณ , K๊ฐ€ 2๋ผ๊ณ  ๊ฐ€์ • - -ํฐ ์ˆ˜์˜ ๋ฒ•์น™์— ๋”ฐ๋ผ, 4+4(์ธ๋ฑ์Šค1์ธ 4)+4+4(์ธ๋ฑ์Šค3์ธ 4)+4+4(์ธ๋ฑ์Šค 1์ธ 4) + 4 = 28 - -#### ๐Ÿ“š **์‹ค์ „๋ฌธ์ œ** - -*** - -์ฐธ๊ณ ) `\leq` ๊ฐ€ $\leq$ - -โ“ ์ž…๋ ฅ์กฐ๊ฑด - -* ์ฒซ์งธ ์ค„ N($2\leq N \leq 1000)$, M$(1\leq M \leq 10,000)$, K$(1\leq K \leq 10,000)$์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ -* ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„, ๋‹จ, ๊ฐ๊ฐ์˜ ์ž์—ฐ์ˆ˜๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์˜ ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค -* ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” K๋Š” ํ•ญ์ƒ M๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค - -โ“ ์ถœ๋ ฅ์กฐ๊ฑด - -* ์ฒซ์งธ ์ค„์— ๋™๋นˆ์ด์˜ ํฐ ์ˆ˜์˜ ๋ฒ•์น™์— ๋”ฐ๋ผ ๋”ํ•ด์ง„ ๋‹ต์„ ์ถœ๋ ฅ - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -* ์ผ๋‹จ, ์ž…๋ ฅ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜์™€ ๋‘๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋งŒ ์ €์žฅํ•˜๋ฉด ๋จ -* ์—ฐ์†์œผ๋กœ ๋”ํ•  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜๋Š” **์ตœ๋Œ€ K๋ฒˆ**์ด๋ฏ€๋กœ โ€˜๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ K๋ฒˆ ๋”ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋ฅผ ํ•œ ๋ฒˆ ๋”ํ•˜๋Š” ์—ฐ์‚ฐโ€™ ๋ฐ˜๋ณต -* ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘ธ๋Š” ์˜ˆ์‹œ - -> ์ฐธ๊ณ  ) **ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•** - -1. map - ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ง€์ •๋œ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ - ํ˜•ํƒœ : **map(ํ•จ์ˆ˜, ๋ฆฌ์ŠคํŠธ)** -2. list - ํ˜•ํƒœ : **list(๋ฆฌ์ŠคํŠธ)** -3. split ํ•จ์ˆ˜ - ์ž…๋ ฅ๊ฐ’์„ ๋‘ ๊ฐœ ์ด์ƒ์œผ๋กœ ๊ตฌ๋ถ„ - ๊ฐ๊ฐ์˜ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜๋ˆ ์คŒ - `๊ณต๋ฐฑ`์„ ์•Œ์•„์„œ ๊ตฌ๋ถ„ํ•ด์คŒ - -```python -# N, M, K๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ -n, m, k = map(int, input().split()) -# N๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ -data = list(map(int, input().split())) - -data.sort() # ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋“ค ์ •๋ ฌ -first = data[n-1] # ๊ฐ€์žฅ ํฐ ์ˆ˜ -second = data[n-2] # ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ - -result = 0 - -while True: - for i in range(k): # ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ K๋ฒˆ ๋”ํ•˜๊ธฐ - if m == 0 # m์ด 0์ด๋ผ๋ฉด ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ - break - result+ = first - m = -1 # ๋”ํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ๋นผ๊ธฐ - if m == 0 # m์ด 0์ด๋ผ๋ฉด ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ - break - result+ = second # ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ **ํ•œ ๋ฒˆ** ๋”ํ•˜๊ธฐ - m = -1 # ๋”ํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ๋นผ๊ธฐ - - print(result) -``` - -#### ๐Ÿ“š ์‹ฌํ™”๋ฌธ์ œ - -*** - -๊ฐ€์ •) M์˜ ํฌ๊ธฐ๊ฐ€ 100์–ต ์ด์ƒ โ‡’ ์œ„์™€ ๊ฐ™์ด ํ’€ ์‹œ **์‹œ๊ฐ„ ์ดˆ๊ณผ ํŒ์ •** - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -* ์ด์ฒ˜๋Ÿผ, ๊ฐ€์žฅ ๋จผ์ € `๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์—ด`์— ๋Œ€ํ•ด์„œ ํŒŒ์•… - * ์•„์ด๋””์–ด : ๋งŒ์•ฝ N์ด 5์ด๊ณ  ์ž…๋ ฅ ๊ฐ’์„ 2, 4, 5, 4, 6์„ ๋ฐ›์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, - * ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋Š” 5๋‹ค. - * ์ด๋•Œ, M = 8, K =3์ด๋ฉด (6+6+6+5)+(6+6+6+5) = 46์ด ๋œ๋‹ค. -* **์ˆ˜์—ด์˜ ๊ธธ์ด** : `K+1`(๋‘๋ฒˆ์งธ ํฐ ์ˆ˜ 1๊ฐœ ๋”ํ•จ), **๋ฐ˜๋ณต๋˜๋Š” ํšŸ์ˆ˜** : `M/(K+1)` - * ์ด๋•Œ, K+1์ด ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ๊ณ ๋ ค - - : M์„ (K+1)๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋งŒํผ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋กœ ๋”ํ•ด์ง - * ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜ : ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ ๋‹ค์Œ, ์ด๋ฅผ ์ด์šฉํ•ด **๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” ํšŸ์ˆ˜**๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. - - : **int((M / (K+1) ) \* K + M % (K+1) )** - - ```python - # N, M, K๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ - n, m, k = map(int, input().split()) - # N๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ - data = list(map(int, input().split())) - - data.sort() # ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋“ค ์ •๋ ฌ - first = data[n-1] # ๊ฐ€์žฅ ํฐ ์ˆ˜ - second = data[n-2] # ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ - - # ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋”ํ•ด์ง€๋Š” **ํšŸ์ˆ˜** ๊ณ„์‚ฐ - count = int((m/(k+1))*k) - count+ = m%(k+1) - - result = 0 - result+ =(count) * first # ๊ฐ€์žฅ ํฐ ์ˆ˜ ๋”ํ•˜๊ธฐ - result+ = (m-count)*second # ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ ๋”ํ•˜๊ธฐ - - print(result) - ``` - -### ๐Ÿ“š ์‹ค์ „๋ฌธ์ œ) ์ˆซ์ž ์นด๋“œ ๊ฒŒ์ž„ - -*** - -์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆซ์ž ์นด๋“œ ์ค‘์—์„œ ๊ฐ€์žฅ ๋†’์€ ์ˆซ์ž๊ฐ€ ์“ฐ์ธ ์นด๋“œ ํ•œ ์žฅ์„ ๋ฝ‘๋Š” ๊ฒŒ์ž„ - -๋‹จ, ๊ฒŒ์ž„์˜ ๋ฃฐ์„ ์ง€ํ‚ค๋ฉฐ, ์นด๋“œ๋ฅผ ๋ฝ‘์•„์•ผ ํ•จ - -* ๊ฒŒ์ž„์˜ ๋ฃฐ - 1. ์ˆซ์ž๊ฐ€ ์“ฐ์ธ ์นด๋“œ๋“ค์ด N $\*$ M ํ˜•ํƒœ๋กœ ๋†“์—ฌ ์žˆ๋‹ค. ์ด ๋•Œ, N์€ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธ, M์€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธ - 2. ๋จผ์ € ๋ฝ‘๊ณ ์ž ํ•˜๋Š” ์นด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํ–‰์„ ์„ ํƒ - 3. ๊ทธ ๋‹ค์Œ ์„ ํƒ๋œ ํ–‰์— ํฌํ•จ๋œ ์นด๋“œ๋“ค ์ค‘ ๊ฐ€์žฅ ์ˆซ์ž๊ฐ€ ๋‚ฎ์€ ์นด๋“œ๋ฅผ ๋ฝ‘์•„์•ผ ํ•œ๋‹ค. - 4. ๋”ฐ๋ผ์„œ ์ฒ˜์Œ์— ์นด๋“œ๋ฅผ ๊ณจ๋ผ๋‚ผ ํ–‰์„ ์„ ํƒ์‹œ, ์ดํ›„์— ํ•ด๋‹น ํ–‰์—์„œ **๊ฐ€์žฅ ์ˆซ์ž๊ฐ€ ๋‚ฎ์€ ์นด๋“œ๋ฅผ ๋ฝ‘์„ ๊ฒƒ์„ ๊ณ ๋ คํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๋†’์€ ์ˆซ์ž์˜ ์นด๋“œ๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋„๋ก ์ „๋žต** - -โ“ ์ž…๋ ฅ์กฐ๊ฑด - -* **์ฒซ์งธ ์ค„**์— ์ˆซ์ž ์นด๋“œ๋“ค์ด ๋†“์ธ ํ–‰์˜ ๊ฐœ์ˆ˜ N๊ณผ ์—ด์˜ ๊ฐœ์ˆ˜ M์ด **๊ณต๋ฐฑ์„ ๊ธฐ์ค€**์œผ๋กœ ํ•˜์—ฌ ๊ฐ๊ฐ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค.$(1\leq N, M\leq100)$ -* **๋‘˜์งธ ์ค„๋ถ€ํ„ฐ** N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ, ๊ฐ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ˆซ์ž๋Š” 1์ด์ƒ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค. - -โ“ ์ถœ๋ ฅ์กฐ๊ฑด - -์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„์˜ ๋ฃฐ์— ๋งž๊ฒŒ ์„ ํƒํ•œ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž ์ถœ๋ ฅ - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -* ์•„์ด๋””์–ด : **๊ฐ ํ–‰๋งˆ๋‹ค ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ์€ ๋’ค์— ๊ทธ ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜** -* **min() ํ•จ์ˆ˜**๋ฅผ ์ด์šฉํ•˜๋Š” ๋‹ต์•ˆ ์˜ˆ์‹œ - -```python -# N๊ณผ M์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ -n, m = map(int, input().split()) - -result = 0 -# ํ•œ ์ค„์”ฉ ์ž…๋ ฅ๋ฐ›์•„ ํ™•์ธ -for i in range(n): - data = list(map(int, input().split())) - # ํ˜„์žฌ ์ค„์—์„œ '๊ฐ€์žฅ ์ž‘์€ ์ˆ˜' ์ฐพ๊ธฐ - min_value = min(data) - # '๊ฐ€์žฅ ์ž‘์€ ์ˆ˜'๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜ ์ฐพ๊ธฐ - result = max(result, min_value) - -print(result) -``` - -* **2์ค‘ ๋ฐ˜๋ณต๋ฌธ ๊ตฌ์กฐ**๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ต์•ˆ ์˜ˆ์‹œ - -```python -# N๊ณผ M์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›๊ธฐ -n, m = map(int, input().split()) - -result = 0 - -for i in range(n): - data = list(map(int, input().split())) - # ํ˜„์žฌ ์ค„์—์„œ '๊ฐ€์žฅ ์ž‘์€ ์ˆ˜' ์ฐพ๊ธฐ - min_value = 10001 - for a in data: - min_value = min(min_value, a) - # ๊ฐ€์žฅ ์ ์€ ์ˆ˜ ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜ ์ฐพ๊ธฐ - result = max(result, min_value) - -print(result) -``` - -### ๐Ÿ“š ์‹ค์ „๋ฌธ์ œ) 1์ด ๋  ๋•Œ๊นŒ์ง€ - -*** - -์–ด๋– ํ•œ ์ˆ˜ N์ด 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ์˜ ๋‘ ๊ณผ์ • ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.๋‹จ, ๋‘ ๋ฒˆ์งธ ์—ฐ์‚ฐ์€ N์ด K๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์งˆ ๋•Œ๋งŒ ์„ ํƒ ๊ฐ€๋Šฅ - -1. N์—์„œ 1์„ ๋บ€๋‹ค. -2. N์„ K๋กœ ๋‚˜๋ˆˆ๋‹ค. - -โ“ ์ž…๋ ฅ์กฐ๊ฑด - -* ์ฒซ์งธ ์ค„์— N($2\leq N \leq 100,000)$๊ณผ K($2 \leq K \leq 100,000)$๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๊ฐ๊ฐ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” N์€ ํ•ญ์ƒ K๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. - -โ“ ์ถœ๋ ฅ์กฐ๊ฑด - -* ์ฒซ์งธ ์ค„์ด N์ด 1์ด ๋  ๋•Œ๊นŒ์ง€ 1๋ฒˆ ํ˜น์€ 2๋ฒˆ์˜ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ผ - -๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ - -์•„์ด๋””์–ด : ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋‚˜๋ˆ„๊ธฐ - -* ์˜ˆ : N = 25, K =3 ์ผ ๊ฒฝ์šฐ - * 1๋‹จ๊ณ„ : N์—์„œ 1๋นผ๊ธฐ\*\*(๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 2๋ฒˆ ๋ถˆ๊ฐ€) โ‡’\*\* 24 - * 2๋‹จ๊ณ„ : N์—์„œ K๋กœ ๋‚˜๋ˆ„๊ธฐ โ‡’ 8 - * 3๋‹จ๊ณ„ : N์—์„œ 1๋นผ๊ธฐ โ‡’ 7 - * 4๋‹จ๊ณ„ : N์—์„œ 1๋นผ๊ธฐ โ‡’ 6 - * 5๋‹จ๊ณ„ : N์—์„œ K๋‚˜๋ˆ„๊ธฐ โ‡’ 2 - * 6๋‹จ๊ณ„ : N์—์„œ 1๋นผ๊ธฐ โ‡’ 1 -* ๋‹จ์ˆœํ•˜๊ฒŒ ํ’€๊ธฐ - -```python -n,k = map(int, input().split()) -result = 0 - -# N์ด K์ด์ƒ์ด๋ผ๋ฉด ๊ณ„์† ๋‚˜๋ˆ„๊ธฐ -while n>=k: - # N์ด K๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด N์—์„œ 1๋นผ๊ธฐ -while n % k !=0 : - n-= 1 - result+ =1 -# k๋กœ ๋‚˜๋ˆ„๊ธฐ -n//=k -result+=1 - -print(result) -``` - -* ์ˆ˜๊ฐ€ ์ปค์งˆ ๋•Œ - -```python -n,k = map(int, input().split()) -result = 0 - -while True: - #(N==K๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š” ์ˆ˜)๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ 1์”ฉ ๋นผ๊ธฐ - target = (n//k) * k - result+ = (n-target) - n = target - # N์ด K๋ณด๋‹ค ์ž‘์„๋•Œ ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ - if n ์ถœ์ฒ˜ : https://gyoogle.dev/blog/computer-science/data-structure/Array%20vs%20ArrayList%20vs%20LinkedList.html - -## 1. tmi ์ •๋ฆฌํ•˜๋Š” ์ด์œ  - -> ์˜ค๋Š˜ ์Šคํ„ฐ๋”” ํ•˜๋Š” ๋ฐ ๋‹ค๋ฅธ ํŒ€์›๋ถ„๋“ค์„ ์–˜๊ธฐํ•ด์ค€ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ดํ•ดํ•œ ๊ฒƒ๊ณผ ์ฐพ์•„๋ณธ ๊ฑฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ข€ ๋” ์ •๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•จ + 8/17 ์ˆ˜์—…์‹œ๊ฐ„ ์ •๋ฆฌ ๋‚ด์šฉ ์ถ”๊ฐ€ - -## 2. Array(๋ฐฐ์—ด) - -![](https://velog.velcdn.com/images/prettylee620/post/27145c70-46a5-439e-9919-d1521ee3f818/image.png) - -1. ์„ ์–ธํ•  ๋•Œ ํฌ๊ธฐ์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. - -```java -int arr[10]; -String arr[5]; -``` - -```java -int[] myArray = new int[10]; -``` - -2. ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด index๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด ๊ฒ€์ƒ‰์— ํŽธํ•œ ์žฅ์ ์ด ์žˆ๋‹ค. -3. ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์šฉ์ด - -### ๐Ÿ ๋‹จ์  - -1. ์ •์  ํ• ๋‹น(static allocation) : ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์„ ์–ธ ํ•  ๋•Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ํ•œ ๋ฒˆ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. -2. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์›๋ž˜๊ฐ’์„ ๋ฐ€์–ด๋‚ด๊ณ  ํ•ด๋‹น INDEX์— ๋ฎ์–ด์”Œ์›Œ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -## 3. ArrayList - -> List๋Š” array์ฒ˜๋Ÿผ ํฌ๊ธฐ๋ฅผ ์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ์˜ ๋ฌธ์ œ์ธ ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜์˜จ ๊ฒƒ์œผ๋กœ array์—์„œ๋Š” index๊ฐ€ ์ค‘์š”ํ–ˆ๋‹ค๋ฉด, List์—์„œ๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/ef3d50b8-eff6-42aa-84c8-d1f28de8199b/image.png) - -1. ArrayList๋Š” ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ํ™•์žฅ๋˜๋Š” ๋ฐฐ์—ด์˜ ๊ตฌํ˜„์ฒด๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด๋„ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋œ๋‹ค. -2. ArrayList๋Š” ๊ฐ์ฒด์— ์ €์žฅํ•˜๋ฉฐ, ๊ฐ์ฒด ์ถ”๊ฐ€/์‚ญ์ œ์— ์šฉ์ดํ•˜๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. -3. ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋˜์ง€๋งŒ, ํฌ๊ธฐ๊ฐ€ ๋™์ ์œผ๋กœ ํ™•์žฅ๋˜๋ฏ€๋กœ **๋ฐฐ์—ด์˜ ํฌ๊ธฐ ์ œํ•œ ๊ทน๋ณต ๊ฐ€๋Šฅ** -4. Java์˜ ์ œ๋„ค๋ฆญ(Generic) ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ArrayList์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณด - -### ๐Ÿ ํŠน์ง• - -1. ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๋ฆฌ์ŠคํŠธ(์ค‘๊ฐ„์— ๋นˆ ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.) -2. ArrayList ํด๋ž˜์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Object\[] ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅ -3. ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์š”์†Œ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ -4. ๋ฐ์ดํ„ฐ์˜ ์ ์žฌ๋Ÿ‰(Capacity)์— ๋”ฐ๋ผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. - -### ๐Ÿ ๋‹จ์  - -1. ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ ์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ ์‹œ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. (๋”ํ•˜๊ฑฐ๋‚˜ ๋บ„๋•Œ๋งˆ๋‹ค ์ค„์ค„์ด ๋‹น๊ฒจ์ง€๊ฑฐ๋‚˜ ๋ฐ€๋ ค๋‚  ๋•Œ ์ง„ํ–‰๋˜๋Š” ์—ฐ์‚ฐ์ด ์ถ”๊ฐ€, ๋ฉ”๋ชจ๋ฆฌ๋„ ๋‚ญ๋น„..) ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฉฐ ๋™์ž‘์ด ๋Š๋ฆฌ๋‹ค. -2. ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ **๋™์ผํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—** ํ•œ ๋ฒˆ ์ƒ์„ฑํ•œ ArrayList๋Š” ๊ทธ ๋‚ด๋ถ€์˜ ์š”์†Œ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. -3. ์กฐํšŒ ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ - -```java -import java.util.ArrayList; - -// ArrayList ์ƒ์„ฑ -ArrayList myList = new ArrayList<>(); - -// ์š”์†Œ ์ถ”๊ฐ€ -myList.add(10); -myList.add(20); - -// ์š”์†Œ ์ ‘๊ทผ -int element = myList.get(0); - -// ์š”์†Œ ์‚ญ์ œ -myList.remove(0); -``` - -## 4. LinkedList - -> ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—๋Š” ๋‹จ์ผ, ๋‹ค์ค‘ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ข…๋ฅ˜๊ฐ€ ๋ฌด์—‡์ด๋“ , ํ•œ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋  ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉ์‹ - -![](https://velog.velcdn.com/images/prettylee620/post/176f58be-fcac-4f30-8abb-84e9cd8b5caa/image.png) - -1. ์ด๋Ÿฐ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋ฉด์„œ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๊ฐ„์— ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ๋ฅผ ํ•˜๋”๋ผ๋„ ์ „์ฒด๋ฅผ ๋Œ์ง€ ์•Š์•„๋„ ์ด์ „ ๊ฐ’๊ณผ ๋‹ค์Œ๊ฐ’์ด ๊ฐ€๋ฅด์ผฐ๋˜ ์ฃผ์†Œ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜์—ฌ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. -2. ์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ• ๊ฐ™์•„๋ณด์ด์ง€๋งŒ, `List์˜ k๋ฒˆ์งธ ๊ฐ’์„ ์ฐพ์•„๋ผ`์—์„œ๋Š” ๋น„ํšจ์œจ์  - -### ๐Ÿ ๋‹จ์  - -1. array๋‚˜ arrayList์—์„œ index๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์ด ๋น ๋ฅด์ง€๋งŒ, LinkedList๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์‚ดํŽด๋ด์•ผํ•˜๋ฏ€๋กœ(์ˆœ์ฐจ) ๊ฒ€์ƒ‰์— ์žˆ์–ด์„œ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์  -2. ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ - -## 5. ์ „์ฒด ๋น„๊ต ์š”์•ฝ - -### ๐Ÿ ํฌ๊ธฐ ์ œํ•œ - -๋ฐฐ์—ด: ๊ณ ์ • ํฌ๊ธฐ, ๋ณ€๊ฒฝ์ด ์–ด๋ ค์›€. ArrayList: ํฌ๊ธฐ ๋™์  ์กฐ์ ˆ ๊ฐ€๋Šฅ. Linked List: ํฌ๊ธฐ ๋™์  ์กฐ์ ˆ ๊ฐ€๋Šฅ. - -### ๐Ÿ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ - -๋ฐฐ์—ด: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ์— ์ œ์•ฝ์ด ์žˆ์Œ. ArrayList: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ์šฉ์ด. Linked List: ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ์šฉ์ด (ํŠนํžˆ ์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ). - -### ๐Ÿ ๊ฒ€์ƒ‰ ์†๋„ - -๋ฐฐ์—ด: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ArrayList: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ. (๊ฒ€์ƒ‰์€ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌ) Linked List: ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋ฐฐ์—ด, ArrayList์— ๋น„ํ•ด ๋Š๋ฆผ. - -### ๐Ÿ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ - -๋ฐฐ์—ด: ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ. ArrayList: ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด ์‚ฌ์šฉ, ํฌ๊ธฐ ์กฐ์ ˆ ๊ฐ€๋Šฅ. Linked List: ๊ฐ ์š”์†Œ๊ฐ€ ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋” ์‚ฌ์šฉ. - -### ๐Ÿ ์‚ฌ์šฉ ์‚ฌ๋ก€ - -๋ฐฐ์—ด: ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๊ฑฐ์˜ ์—†๋Š” ๊ฒฝ์šฐ, ๋น ๋ฅธ ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ. ArrayList: ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋น ๋ฅธ ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ. Linked List: ์š”์†Œ์˜ ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ. - -## 6. ์ฐธ๊ณ  - -> 8/23 ๊ตญ๋น„์—์„œ ํ…Œ์ŠคํŠธ ๋ณด๋‹ค๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์•„ ์ถ”๊ฐ€ํ•จ - -### ๐Ÿ ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค๋ผ๋Š” ๋ง์€ ๋งž๋Š” ๋ง์ผ๊นŒ? - -> ์ผ๋‹จ ๋‹ต์€ NO์ด๋‹ค - -1. `ArrayList` - -* ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. -* ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์ด ๋•Œ๋ฌธ์— ArrayList์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๊ทธ ๋‹ค์Œ ์ธ๋ฑ์Šค์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ž์œผ๋กœ ๋‹น๊ฒจ์ง„๋‹ค. -* ๋”ฐ๋ผ์„œ "๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ๊ฒƒ์€ **์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋”๋ผ๋„ ํ•ด๋‹น ์œ„์น˜์— null ๋˜๋Š” ๋‹ค๋ฅธ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ฑ„๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค.** - -2. `LinkedList` - -* ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์ด์ „ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. -* ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์ด์ „ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋งŒ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ, "๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ๊ทœ์น™์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์ง€ - -๋”ฐ๋ผ์„œ "๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค"๋Š” ์„ค๋ช…์€ **ArrayList์™€ ๊ฐ™์€ ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.** - -### ๐Ÿ LinkedList์—๋„ ์ธ๋ฑ์Šค๋Š” ์žˆ๋‹ค. - -1. LinkedList๋„ ๊ฐ ์š”์†Œ์— ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ArrayList์™€๋Š” ๋‹ค๋ฅด๊ฒŒ LinkedList์˜\*\* ์ธ๋ฑ์Šค๋กœ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์€ ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.\*\* -2. LinkedList๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๋‹ค์Œ ์š”์†Œ์™€ ์ด์ „ ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์›ํ•˜๋Š” ์œ„์น˜๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋ ค๋ฉด \*\*์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๊ฐ€์•ผ ํ•œ๋‹ค. \*\*๋ฐ˜๋ฉด์— ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์ธ๋ฑ์Šค๋กœ ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. - -## 7. ํšŒ๊ณ  - -> ์Šคํ„ฐ๋””์—์„œ ์ข‹์€ ์ ์€ ๋‚ด๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„ ํ•œ๋ฒˆ ๋” ์ •๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ™”์ดํŒ… diff --git a/developLog/algorithm-datastructure/data-structure/array.md b/developLog/algorithm-datastructure/data-structure/array.md deleted file mode 100644 index e0a31ea..0000000 --- a/developLog/algorithm-datastructure/data-structure/array.md +++ /dev/null @@ -1,95 +0,0 @@ -# ๋ฐฐ์—ด(array) - -> ์ถœ์ฒ˜ : https://www.youtube.com/watch?v=NFETSCJON2M\&list=PL7jH19IHhOLMdHvl3KBfFI70r9P0lkJwL\&index=3 - -## 1. ์‹œ๊ฐ„๋ณต์žก๋„๋ž€? - -*** - -* ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ์˜คํผ๋ ˆ์ด์…˜ ํ˜น์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ผ๋งˆ๋‚˜ ๋Š๋ฆฌ๊ณ  ๋น ๋ฅธ์ง€ ์ธก์ •ํ•˜๋Š” ๊ฒƒ -* `์‹ค์ œ ์‹œ๊ฐ„`์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์–ผ๋งˆ๋‚˜ `๋งŽ์€ ๋‹จ๊ณ„[steps]`๊ฐ€ ์žˆ๋Š”๊ฐ€๋กœ ์ธก์ • -* ๋‹จ๊ณ„๊ฐ€ ์ ์„์ˆ˜๋ก ์ข‹์€ ๊ฒƒ -* 5 step > 20 step - -## 2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ ์—์„œ ๋ฐฐ์—ด์ด ์–ด๋–ป๊ฒŒ ๋ณด์ผ๊นŒ? - -*** - -### **โœจ** ๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜ - -1. **volatile(ํœ˜๋ฐœ์„ฑ) ๋ฉ”๋ชจ๋ฆฌ** : RAM, ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ํ‚ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง - -* ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ€๊ณ , `๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ` ํ•  ๋•Œ, RAM์— ์ €์žฅ -* **RAM**(Random Access Memory) : ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์ฝ๋Š” ๊ฒƒ์ด ๋น ๋ฅด๋ฉฐ, ๋ฐ์ดํ„ฐ ์ ‘์†์„ ๋žœ๋ค์œผ๋กœ ๊ฐ€๋Šฅ - -| 001 | 002 | 003 | -| --- | --- | --- | -| 004 | 005 | 006 | -| 007 | 008 | 009 | -| 010 | 011 | 012 | - - - -* ์œ„์™€ ๊ฐ™์ด RAM์ด `๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์€ ๋ฐ•์Šค`๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด **RAM์—๊ฒŒ 006์œผ๋กœ ๊ฐ€์ฃผ์„ธ์š” ํ•˜๋ฉด ๋žœ๋คํ•˜๊ฒŒ ์ ‘์† ๊ฐ€๋Šฅ**ํ•˜๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ๋น ๋ฅธ ๊ฒƒ, ๋ฐ”๋กœ ์ด๋™ ๊ฐ€๋Šฅ(์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ)\ - - -2. **non-volatile(๋น„ํœ˜๋ฐœ์„ฑ) ๋ฉ”๋ชจ๋ฆฌ** - -* ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ฐ™์€ ๊ฒƒ, ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ํ‚ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ -* ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ ์—์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๋•Œ, ์ปดํ“จํ„ฐ์—๊ฒŒ **์ด๊ฒŒ ์–ผ๋งˆ๋‚˜ ๊ธด์ง€** ์„ค๋ช…ํ•ด์•ผ ํ•จ -* ๋‚˜์˜ ๋ฐฐ์—ด์€ 4๊ฐœ ๋งŒํผ ๊ธธ์–ด ๋ฏธ๋ฆฌ **์˜ˆ์•ฝ/ํ• ๋‹น**ํ•ด์ค˜! ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์—์„œ ๋ฐ•์Šค๋“ค์ด ๋‚˜๋ž€ํžˆ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ -* ๋ฐฐ์—ด์€ ๊ฒ€์ƒ‰, ์ถ”๊ฐ€,์‚ญ์ œ์‹œ ๋Š๋ ค์ง - -## 3. ๋ฐฐ์—ด - -*** - -### **โœจ** Reading : O(1) - -**๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ** 001 002 003 004 - -**index** 0 1 2 3 - -* **์œ„์น˜**๋งŒ ์•Œ๋ฉด, ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘์† ๊ฐ€๋Šฅ - - โ‡’ **๋ฐฐ์—ด์—์„œ ์ฝ์–ด๋‚ด๋Š” ๊ฒƒ์ด ๋น ๋ฆ„**, ์ปดํ“จํ„ฐ๋Š” ๋ฐฐ์—ด์ด ์–ด๋””์„œ ์‹œ์ž‘๋˜๋Š” ์ง€ ์•„๋‹ˆ๊นŒ -* EX. ํ”ผ์ž๋ฅผ ์›ํ•˜๋ฉด ์ปดํ“จํ„ฐ์—๊ฒŒ ์ธ๋ฑ์Šค 1๋ฒˆ์˜ ๊ฐ’์„ ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋จ -* ๋งŽ์€ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด๋‚ด๋ ค๋ฉด ๋ฐฐ์—ด์ด Good, ๋ฐฐ์—ด์˜ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ ์ƒ๊ด€์—†์ด `Random` ํ•˜๊ฒŒ ์ฝ์–ด๋‚ด๋‹ˆ๊นŒ -* ๋ฐฐ์—ด์—์„œ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ **ํ•ญ์ƒ ์ž…๋ ฅ ํฌ๊ธฐ์˜ ๊ด€๊ณ„ ์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์‹คํ–‰** -* ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ํ•ญ์ƒ ๊ณ ์ •๋œ ์‹œ๊ฐ„๋งŒํผ ๊ฑธ๋ฆฐ๋‹ค. -* ์ด๋Š” ์ž…๋ ฅ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•˜๊ฒŒ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋ฉฐ, ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ Big O ํ‘œ๊ธฐ๋ฒ•์€ \*\*`O(1)`\*\*๋กœ ํ‘œํ˜„ - -### **โœจ** Searching : O(n) - -* ํ•ด๋‹น ๊ฐ’(=ex. ํ”ผ์ž)๊ฐ€ **๋ฐฐ์—ด์— ์žˆ๋Š”์ง€, ์—†๋Š”์ง€ ๋ชจ๋ฆ„** -* ์–ด๋””์— ์žˆ๋Š”์ง€๋„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ -* ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๋’ค์ ธ๋ด์•ผ ํ•จ -* So, ์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆผ -* `Random Access`๊ฐ€ ์žˆ์–ด ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ๋ฐ•์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ์€ ๊ฐ€๋Šฅํ•˜๋‚˜, ๊ทธ ๋ฐ•์Šค๋ฅผ ์—ด์–ด์•ผ ๊ฐ’์„ ํ™•์ธ ๊ฐ€๋Šฅ -* ๋ฐฐ์—ด์˜ ์•„์ดํ…œ์„ ํ•˜๋‚˜ํ•˜๋‚˜ **์—ด์–ด๋ณด๊ณ  ๋งž๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๊ณผ์ •์„ ํ•˜๋‚˜ํ•˜๋‚˜ ํ•ด์•ผ**ํ•จ -* **Linear Search\[์„ ํ˜• ๊ฒ€์ƒ‰]** : ์ˆœ์„œ๋Œ€๋กœ 0๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฐพ๋Š” ๊ฒƒ - -### **โœจ** Insert\[Add] ํ˜น์€ ๋ฐฐ์—ด์— ์“ฐ๊ธฐ : O(n) - -* ๋งŒ์•ฝ, โ€œtomatoโ€๋ฅผ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด, ๋ฏธ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ด๋’€์œผ๋‹ˆ๊นŒ ๊ณต๊ฐ„ ๊ฑฑ์ •์€ No! -* ๊ฒฐ๊ตญ `์–ด๋””์—` ํ† ๋งˆํ† ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ธ๊ฐ€! -* ๋งŒ์•ฝ ์ค‘๊ฐ„์ด ์•ž์— `์ถ”๊ฐ€`ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด **๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์„ ์˜ฎ๊ฒจ์•ผ ํ•จ**(์•„๋ž˜์™€ ๊ฐ™์ด) -* ๊ทผ๋ฐ ๋งŒ์•ฝ.. **๊ณต๊ฐ„์ด ๊ฝ‰ ์ฐจ ์žˆ๋Š”๋ฐ** ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณค๋ž€ -* โ‡’ **ํ•ด๊ฒฐ๋ฐฉ์•ˆ** : ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๊ทธ ๋ฐฐ์—ด์— ์ด์ „ ๋ฐฐ์—ด์„ `๋ณต์‚ฌ`ํ•˜๊ณ , ์ƒˆ๋กœ `์ถ”๊ฐ€`ํ•ด์•ผ ํ•จ -* ๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ  ๋ณต์žก - -### **โœจ** Delete : O(N) - -๋ฐฐ์—ด์— ๋ญ”๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šท - -๋ฐฐ์—ด์„ ์ด๋ฆฌ์ €๋ฆฌ ์›€์ง์—ฌ์•ผ ํ•จ - -EX. โ€œice creamโ€์„ ์—†์• ๊ณ  ์‹ถ์–ด โ‡’ ์‚ญ์ œ ํ›„ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ์•ž์œผ๋กœ ๋•ก๊ฒจ์•ผ ํ•จ - -## 4. ๊ฒฐ๋ก  - -*** - -* ๋ฐฐ์—ด์˜ ํ†ตํ•ฉ์ ์ธ ๋น…์˜ค๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์—ฐ์‚ฐ์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ(**`O(N)`**)๋ฅผ ์ข…ํ•ฉํ•œ ๊ฒฐ๊ณผ์ผ ์ˆ˜ ์žˆ๋‹ค. -* ๋ฐฐ์—ด์€ ์ ‘๊ทผ ์—ฐ์‚ฐ์„ ์ œ์™ธํ•˜๋ฉด **ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ๋น„๊ต์  ํšจ์œจ์ ์ด์ง€ ์•Š์€ ํŽธ**์ด๋ฏ€๋กœ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์˜ ํšจ์œจ์„ฑ์„ ๊ณ ๋ ค -* ์˜คํžˆ๋ ค ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋” ๋น ๋ฅด๊ณ  ๋ฐฐ์—ด์€ ๋Š๋ฆผ ๋ฐฐ์—ด์€ ๋ชจ๋“  ์ƒ์ž๋ฅผ ์•ž์œผ๋กœ ์˜ฏ๊ฒจ์•ผ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์„ ์„ ๋ฐ”๊ฟ”์„œ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ diff --git a/developLog/algorithm-datastructure/data-structure/big-o.md b/developLog/algorithm-datastructure/data-structure/big-o.md deleted file mode 100644 index 422d26b..0000000 --- a/developLog/algorithm-datastructure/data-structure/big-o.md +++ /dev/null @@ -1,426 +0,0 @@ ---- -cover: >- - https://file.notion.so/f/f/3f5af70e-5587-4c7a-8846-c7c5c0a904e2/bb5eb3c8-3a67-42a3-9f79-5b9e7ae18004/Untitled.png?table=block&id=b0e23518-b129-4308-b83b-ec65feb78ce5&spaceId=3f5af70e-5587-4c7a-8846-c7c5c0a904e2&expirationTimestamp=1723118400000&signature=rnD47Ut9ef14TJYUsQjV9D1VaLm05HlFUi3ZDGKTiYQ&downloadName=Untitled.png -coverY: 0 -layout: - cover: - visible: true - size: hero - title: - visible: true - description: - visible: true - tableOfContents: - visible: true - outline: - visible: true - pagination: - visible: true ---- - -# Big O - -![](https://velog.velcdn.com/images/prettylee620/post/cbfefa92-15c0-46e9-bd52-ac40aace2420/image.png) - -## 1. ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•œ ์ด์œ  - -### 1) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ž€? - -์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์“ฐ์—ฌ์ง€๋Š” ์–ธ์–ด - -์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ณด๋‹ค ์‰ฝ๊ณ  ํšจ์šธ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์คŒ - -ํ˜„์—…์˜ ๊ฒฝ์šฐ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜์ง€ ์•Š์Œ ๋Œ€๋ถ€๋ถ„์€ ์–ธ์–ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋ฏธ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ์•„์ด๋“ค์„ ๊ฐ€์ ธ์™€์„œ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉ - -### 2) ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ณผ๊นŒ? - -์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ ํ›„ ์งˆ์˜/์‘๋‹ต์„ ํ†ตํ•ด ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์–ผ๋งˆ๋‚˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๊ณ  ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ ์œ„ํ•จ - -EX. - -* ํ•˜ํ•„ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•œ ์ด์œ ๋Š”? -* ์ด๊ฒƒ์ด ์ €๊ฒƒ๋“ค์˜ ๋น„ํ•ด ์žฅ๋‹จ์ ์€? -* ์ €๊ฒƒ๊ณผ ์ด๊ฒƒ์˜ ์ฐจ์ด๋Š”? - -## 2. ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€๋ฐฉ๋ฒ• - -์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์–ด๋Š ์ƒํ™ฉ์— ์“ฐ์ด๋Š” ๊ฒƒ์ด ์ข‹๊ณ  ๋˜ ์–ด๋–ค ์‹์˜ API๋“ค์ด ์žˆ๋Š”์ง€ ์ด๋Ÿฐ ๊ฒƒ๋“ค ์กฐ๊ธˆ ํฐ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ - -### 1) ์ž๋ฃŒ๊ตฌ์กฐ - -์„œ๋น„์Šค๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ป๊ฒŒ ๊ตฌ์กฐ์ ์œผ๋กœ ์ž˜ ์ •๋ฆฌํ•ด์„œ ๋‹ด์•„๋‘๊ณ , ๊ด€๋ฆฌํ•˜๊ณ  **ํšจ์œจ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ํ•„์š”ํ•œ ์ˆ˜์ • ์‚ฝ์ž… ์‚ญ์ œ** ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•œ ์•Œ๋งž๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. - -> ๐Ÿ’ก ์ž๋ฃŒ ๊ตฌ์กฐ ๊ณต๋ถ€์‹œ Point - -1. Order : ์ž๋ฃŒ ๊ตฌ์กฐ ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ? -2. Unique : ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š”๊ฐ€? -3. Search : ๊ฒ€์ƒ‰์— ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ๊ฐ€? -4. Modification : ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ์„œ ์ˆ˜์ •์‹œ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ์ง€? - -## 3. BigO - -> ์ถœ์ฒ˜ : ๋‹ˆ๊ผด๋ผ์Šค https://www.youtube.com/watch?v=BEVnxbxBqi8 - -### 1) ๊ฐœ์š” - -* ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ **์Šคํ”ผ๋“œ**๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋Š”์ง€ ์•Œ์•„๋ด„ -* ๋น ๋ฅด๋‹ค, ๋Š๋ฆฌ๋‹ค์˜ ๋ง์ด ์•„๋‹Œ `CS์ง€์‹` - -### 2) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - -*** - -์ œํ•œ๋œ ๊ณต๊ฐ„๊ณผ ์‹œ๊ฐ„ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •ํ•ด๋†“์€ ๋กœ์ง - -์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌ ๋˜๋Š” ์ด์ ์„ ๊ตฌํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/2e69337f-9686-4508-93f8-8dd558bc16e3/image.png) - -์ฆ‰, ์ฃผ์–ด์ง„ `input`์œผ๋กœ **์ •์˜๋œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰**ํ•œ ๋‹ค์Œ `output` ๊ฒฐ๊ณผ๊ฐ’์„ ๋‚ด๋Š” ๊ฒƒ - -### 3) ์‹œ๊ฐ„๋ณต์žก๋„ - -*** - -> ๐Ÿ’ซ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ์ž…๋ ฅ์˜ ํ•จ์ˆ˜ ๊ด€๊ณ„ - -1. โ€œ๋น ๋ฅด๋‹คโ€, โ€œ๋Š๋ฆฌ๋‹คโ€๋Š” `์‹œ๊ฐ„`์œผ๋กœ **ํ‘œํ˜„ํ•˜์ง€ ์•Š์Œ(์‹œ๊ฐ„ ๋ณต์žก๋„)** - * ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋„ ๋‚ด ์ปดํ“จํ„ฐ๊ฐ€ ์นœ๊ตฌ์˜ ์ปดํ“จํ„ฐ๋ณด๋‹ค ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ - * ์ปดํ“จํ„ฐ๋ผ๋Š” **ํ•˜๋“œ์›จ์–ด**๊ฐ€ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ - * โ€œ์™„๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์ ˆ์ฐจ์˜ ์ˆ˜โ€`STEPS` - * ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜ - * ํŠน์ • ํฌ๊ธฐ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š”์ง€\ - -2. **์„ ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ** ์‚ฌ์ด์ฆˆ๊ฐ€ **N**๊ฐœ์ด๋ฉด, **N**์Šคํ…์ด ํ•„์š”ํ•จ - -### 4) ๊ณต๊ฐ„๋ณต์žก๋„ - -*** - -* ๊ณต๊ฐ„๋ณต์žก๋„ : ํŠน์ •ํ•œ ํฌ๊ธฐ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ `๋ฉ”๋ชจ๋ฆฌ`๋ฅผ ์ฐจ์ง€ํ•˜๋Š”์ง€ -* ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘ -* ์˜ˆ๋ฅผ ๋“ค์–ด `int a[1004];`๋ผ๋Š” ๋ฐฐ์—ด์ด๋ฉด a ๋ฐฐ์—ด์€ 1004X4๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋จ - -### 5) Big O - -*** - -> ๐Ÿ’ซ ์‚ฌ์ด์ฆˆ๊ฐ€ N๊ฐœ๋ฉด, N์Šคํ…์ด ํ•„์š”ํ•ด์š”!!! ๋ณด๋‹ค๋Š” ์„ ํ˜•๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ = O(N) ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์ปจ์…‰์„ Big O - -1. Big O๋ž€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” **ํ‘œ๊ธฐ๋ฒ•** -2. ์–ธ์ œ ๋ฌด์—‡์„ ์“ธ์ง€ ๋น ๋ฅด๊ฒŒ ํŒŒ์•… ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ ๊ฐ€๋Šฅ - * ์™œ..? ๋ฏธ๋ž˜์— ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋‹ˆ - * Big O๋ฅผ ์ดํ•ด์‹œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ **๋น ๋ฅด๊ฒŒ ๋ถ„์„** ๊ฐ€๋Šฅ, ์–ธ์ œ ๋ฌด์—‡์„ ์“ธ์ง€ ํŒŒ์•… ๊ฐ€๋Šฅ -3. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํผํฌ๋จผ์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  `ํšจ์œจ์ `์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• - -* ์„ ํ˜•๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ = `O(N)` -* but, ํ•ญ์ƒ Big O๊ฐ€ ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์™„๋ฒฝํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜ - -4. ๋ฐฐ์—ด์„ ์ธํ’‹์œผ๋กœ ์‚ฌ์šฉํ•  ํ•จ์ˆ˜, ์ธํ’‹์˜ ํฌ๊ธฐ ์ƒ๊ด€์—†์ด **๋™์ผํ•œ ์ˆ˜์˜ ์Šคํ…**์ด ํ•„์š” - * ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” print\_first๋ผ๋Š” ํŒŒ์ด์ฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉฐ, ๋งค๊ฐœ๋ณ€์ˆ˜ arr์—๊ฒŒ ๋ฐ›์œผ๋ฉฐ, arr์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์ถœ๋ ฅํ•ด๋ƒ„ - * `์ธ๋ฑ์Šค`๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์ฐพ์œผ๋‹ˆ๊นŒ - * ์ด ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” `constant time(์ƒ์ˆ˜ ์‹œ๊ฐ„)` : **N์˜ ํฌ๊ธฐ ์ƒ๊ด€์—†์ด** ๋๋‚ด๋Š”๋ฐ ๋™์ผํ•œ ์ˆซ์ž์˜ ์Šคํ…์ด ํ•„์š” - -```python -def print_first(arr): - print(arr[0]) -``` - -![](https://velog.velcdn.com/images/prettylee620/post/c2af3677-4a8c-46b0-9e59-77d7510ad855/image.png) - -1. ์ด ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ 2๋ฒˆ์˜ print๊ฐ€ ์žˆ๋Š”๋ฐ 2๊ฐœ์˜ ์Šคํ…์ด ํ•„์š”ํ•œ ๊ฒƒ - -```python -def print_first(arr): - print(arr[0]) - print(arr[0]) -``` - -๐Ÿ’ซ ์ด๋ ‡๋‹ค๋ฉด O\[2] ์ผ๊นŒ? NO! ์—ฌ์ „ํžˆ **O\[1]** - -* Big O๋Š” ํ•จ์ˆ˜์˜ ๋””ํ…Œ์ผ์— ๊ด€์‹ฌ์ด ์—†๊ณ , ๋Ÿฌํ”„ํ•˜๊ฒŒ ์–ด๋–ป๊ฒŒ ์ด ํ•จ์ˆ˜๊ฐ€ `์ธํ’‹์˜ ์‚ฌ์ด์ฆˆ`์— ๋”ฐ๋ผ์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๊ฐ€ ์ค‘์š” -* ํ•จ์ˆ˜๋Š” ์ธํ’‹ ์‚ฌ์ด์ฆˆ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ์ปค์ ธ๋„ ์ƒ๊ด€์—†์ด ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ์ˆซ์ž์— ๋”ฐ๋ผ ์ž‘๋™ - -1. ์ฆ‰, Big O๋Š” ํฐ ์›๋ฆฌ์—๋งŒ ๊ด€์‹ฌ์„ ๊ฐ€์ง -2. ๊ผญ ๊ธฐ์–ตํ•ด ๋‘ฌ์•ผ ํ•  ๊ฒƒ์€ ๋น…์˜ค๋Š” `์ƒ์ˆ˜`๋ฅผ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Œ - -### 6) Constant Time Algorithm(์ƒ์ˆ˜ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜) - -*** - -* constant time `(์ผ์ •ํ•œ ์‹œ๊ฐ„/์ƒ์ˆ˜)` -* ์ธํ’‹์‚ฌ์ด์ฆˆ์™€ ๊ด€๊ณ„์—†์ด ์Šคํ…์ด ์ •ํ•ด์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค -* ํ•ญ์ƒ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ โ‡’ ์ธํ’‹์ด ๋Š˜์–ด๋‚˜๋„ **๋ณ€ํ•˜์ง€ ์•Š์Œ** -* ํ˜„์‹ค์ ์œผ๋กœ **ํ•ญ์ƒ** ๋งŒ๋“ค๊ธฐ ํž˜๋“ค๋‹ค - -![](https://velog.velcdn.com/images/prettylee620/post/0a202750-4308-4eca-b0a5-08647c382c6b/image.png) - -#### O(n) ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด - -```java -// ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n)์ด ๊ณ„์‚ฐ๋œ๋‹ค. O(1) -public class OneToSum { - - public int sum(int n){ - int sum = 0; - - return n * (n + 1) / 2; - } - - - public static void main(String[] args) { - int n = 5; - // static์œผ๋กœ ์ฃผ์ง€ ์•Š์„ ๋•Œ - OneToSum object = new OneToSum(); - System.out.println(object.sum(10)); - } -} -``` - -### 7) ์‹œ๊ฐ„๋ณต์žก๋„ 1: Big O์˜ ์‹œ๊ฐ„๋ณต์žก๋„, ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„ - -*** - -๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 10์ด๋ผ๋ฉด, 10๋ฒˆ ํ”„๋ฆฐํŠธ ํ•˜๋Š” ํ•จ์ˆ˜ : **O(N)** - -```python -def print_all(arr): - for n in arr: - print(n) -``` - -Q: ๋งŒ์•ฝ ๋ฐ˜๋ณต๋ฌธ์„ ๋‘๋ฒˆ์ด๋ผ๋ฉด O(2N)์ผ๊นŒ? \*\*\*\* - -```python -def print_all(arr): - for n in arr: - print(n) - for n in arr: - print(n) -``` - -A: **2๋Š” ์ƒ์ˆ˜**์ด๊ธฐ์— **๋ฒ„๋ ค๋‘๊ณ **, ์—ฌ์ „ํžˆ `O(N)`์œผ๋กœ ํ‘œํ˜„, ํ•ต์‹ฌ์€ ๋ณ€ํ•˜์ง€ ์•Š์•˜์ง€ ๋•Œ๋ฌธ - -๋ฉ”์„ธ์ง€๊ฐ€ ๊ฐ™๋‹ค โ‡’ `์ธํ’‹์ด ์ฆ๊ฐ€`ํ•˜๋ฉด `์Šคํ…๋„ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€` - -#### O(N)์ด๋‚˜ ์„ ํ˜• ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ทธ๋ž˜ํ”„ - -![](https://velog.velcdn.com/images/prettylee620/post/ef219a14-8b13-4409-ae85-56d2855b5cf9/image.png) - -### 8) ์‹œ๊ฐ„๋ณต์žก๋„ 2 : Quadratic Time(2์ฐจ ์‹œ๊ฐ„) - -*** - -* `Nested Loops(์ค‘์ฒฉ ๋ฐ˜๋ณต)`์ด ์žˆ์„ ๋•Œ, ๋ฐœ์ƒ -* ์•„๋ž˜์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๊ฐ ์•„์ดํ…œ์— ๋Œ€ํ•ด ๋ฃจํ”„๋ฅผ ๋ฐ˜๋ณต, ์‹คํ–‰ - -```python -def print_twice(arr) - for n in arr: - for x in arr: - print(x, n) -``` - -* ์‹œ๊ฐ„๋ณต์žก๋„ : **์ธํ’‹ $n^2$** - - EX. ์ธํ’‹์ด 10๊ฐœ์‹œ 100๋ฒˆ์˜ ์Šคํ… : **๋ฃจํ”„ ์•ˆ์˜ ๋ฃจํ”„**์—์„œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ - -#### 2์ฐจ ์‹œ๊ฐ„๋ณต์žก๋„ ๊ทธ๋ž˜ํ”„๋ฅผ ์„ ํ˜• ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๋น„๊ต ๊ทธ๋ž˜ํ”„ - -![](https://velog.velcdn.com/images/prettylee620/post/b01548a2-0d8d-4a8d-ba5d-9026aa5ba5a0/image.png) - -**์„ ํ˜• ์‹œ๊ฐ„๋ณต์žก๋„**๊ฐ€ 2์ฐจ ์‹œ๊ฐ„๋ณต์žก๋„๋ณด๋‹ค ๋” **ํšจ์œจ์ ** - -### 9) ์‹œ๊ฐ„๋ณต์žก๋„ 3 : ๋กœ๊ทธ ์‹œ๊ฐ„(Logarithmic Time) - -*** - -1. ์ด์ง„๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…์‹œ ์‚ฌ์šฉ โ‡’ ์–ผ๋งˆ๋‚˜ `๋น ๋ฅธ์ง€` ์„ค๋ช… ๊ฐ€๋Šฅ - 1. ์ด์ง„ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ธํ’‹ ์‚ฌ์ด์ฆˆ๊ฐ€ 2๋ฐฐ๊ฐ€ ๋˜์–ด๋„ ํ•„์š”ํ•œ step์˜ ์ˆ˜๋Š” 1๊ฐœ๋ฐ–์— ์•ˆ๋“ค์–ด๋‚จ - 2. ์™œ๋ƒ? ์ด์ง„๊ฒ€์ƒ‰์€ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์Šคํ…์„ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์„œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด -2. ํ‘œํ˜„๋ฒ• : `O(log N)` -3. ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ -4. exponent(์ง€์ˆ˜) โ†” logarithm(๋กœ๊ทธ) - -* n = $log\_232$ n์€ 32๋ฅผ 2๋กœ ๋ช‡๋ฒˆ์„ ๋‚˜๋ˆ ์•ผ 1์ด ๋‚˜์˜ฌ๊นŒ? - -> ๐Ÿ’ซ 32 / 2 = 16 โ† 1 16 / 2 = 8 โ† 2 8 / 2 = 4 โ† 3 4 / 2 = 2 โ† 4 2 / 2 = 1 โ† 5 times - -* n์€ 5 - - โ‡’ ์ด์ง„ ๊ฒ€์ƒ‰๊ณผ ๊ฐ™์Œ ์ธํ’‹์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ - - โ‡’ Big O์˜ ํŠน์„ฑ์ƒ n = $log32$ ์•„๋ž˜์˜ 2๊ฐ€ ์‚ฌ๋ผ์ง - - โ‡’ So, `log N`์ด ๋˜๋Š” ๊ฒƒ -* ๋กœ๊ทธ ์‹œ๊ฐ„๋ณต์žก๋„์˜ **๊ทธ๋ž˜ํ”„** - -![](https://velog.velcdn.com/images/prettylee620/post/a41f1623-b1e9-46b2-a071-72a38c32956d/image.png) - -**์„ ํ˜•์‹œ๊ฐ„**๋ณด๋‹ค๋Š” `๋น ๋ฅด๊ณ `, **์ƒ์ˆ˜ ์‹œ๊ฐ„**๋ณด๋‹ค๋Š” `๋Š๋ฆผ` - -### 10) **O(1) & O(N) & O(logN) ๊ทธ๋ž˜ํ”„** - -*** - -**O(1) > O(logN) > O(N) ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋‹ค.** - -O(logN)์€ ์•„์ฃผ ์กฐ๊ธˆ์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ณก์„ ์„ ๊ทธ๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ O(1)๋ณด๋‹ค๋Š” ๋œ ํšจ์œจ์ ์ด์ง€๋งŒ O(N)๋ณด๋‹ค๋Š” ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค. - -์‚ฌ์ง„ ์ถœ์ฒ˜ : https://velog.io/@welloff\_jj/Complexity-and-Big-O-notation - -![](https://velog.velcdn.com/images/prettylee620/post/8a5efee5-46db-43cb-b974-7f1c9006b473/image.png) - -### 11) ๊ทธ๋ ‡๋‹ค๋ฉด ์—ฐ์Šต๋ฌธ์ œ - -*** - -์ถœ์ฒ˜ : https://velog.io/@on-n-on-turtle/๋ˆ„๊ตฌ๋‚˜-์ž๋ฃŒ๊ตฌ์กฐ์™€-์•Œ๊ณ ๋ฆฌ์ฆ˜-๋น…์˜คํ‘œ๊ธฐ๋ฒ• - -#### ๐Ÿ“– ๋ฆฌ์ŠคํŠธ ๋‚ด ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ถœ๋ ฅํ•จ - -```jsx -public static void printThings() { - String[] things = {"apples", "chairs", "files", "notes"}; - - for (String thing : things) - System.out.printf("Here's a thing : %s \n", thing); -} -``` - -์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ `for`๋ฃจํ”„์—์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ 4๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— 4๋‹จ๊ณ„๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. - -๋งŒ์•ฝ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ 10๊ฐœ์ด๋ฉด 10๋‹จ๊ณ„๊ฐ€ ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค. - -**`for`๋ฃจํ”„์— ๋Œ€์ž…๋˜๋Š” ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐฏ์ˆ˜๋งŒํผ ๋‹จ๊ณ„๊ฐ€ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์€ O(N)์ด๋‹ค.** - -#### ๐Ÿ“– **์ฃผ์–ด์ง„ ํ•ด๊ฐ€ ์œค๋…„์ธ์ง€ ์•Œ์•„๋ด„** - -```jsx -public static boolean isLeapYear(int year) { - return (year % 100 == 0) ? (year % 400 == 0) : (year % 4 == 0); -} -``` - -**`N`์€ `number`์ด๋‹ค.** - -**ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ˆ˜์— ์ƒ๊ด€์—†์ด ๋‹จ๊ณ„ ์ˆ˜๊ฐ€ ์ผ์ •ํ•˜๋ฏ€๋กœ O(1)์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.** - -### 12) ์Šคํ„ฐ๋””์—์„œ ์–ป์€ ์ž์ฃผ ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ์ •๋ฆฌ - -> 8์›” 23์ผ ๊ตญ๋น„ ๊ฐ•์˜ ๋“ค์œผ๋ฉด์„œ ์ €๋ฒˆ์ฃผ์— ์ง„ํ–‰ํ•œ ์Šคํ„ฐ๋””์—์„œ ๋‹ค๋ฅธ ๋ถ„์ด ์ •๋ฆฌ ํ•œ ์ถ”๊ฐ€ ๋‚ด์šฉ - -#### **1๏ธโƒฃ ๋ฐฐ์—ด** - -1. ์‚ฝ์ž…/์‚ญ์ œ: O(N) -2. ํƒ์ƒ‰: O(1) - -> ๐Ÿ‘‰ ํŒŒ์ด์ฌ์—์„œ๋Š” ๋‹จ์ˆœํžˆ **List๋กœ ๊ตฌํ˜„**ํ•œ๋‹ค. ๐Ÿ‘‰ **ํƒ์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ์ž๋ฃŒ๊ตฌ์กฐ**(์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๋Š” ํ•œ์ž๋ฆฌ์”ฉ ๋’ค๋กœ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ํ•˜๋Š” ์‹์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N)์ด๋œ๋‹ค.) - -#### **2๏ธโƒฃ ๋ฒกํ„ฐ (= ๋™์ ๋ฐฐ์—ด)** - -์‚ฝ์ž…/์‚ญ์ œ: O(N) - -ํƒ์ƒ‰: O(1) - -> ๐Ÿ‘‰ ํŒŒ์ด์ฌ์—์„œ๋Š” ๋‹จ์ˆœํžˆ **List๋กœ ๊ตฌํ˜„**ํ•œ๋‹ค. C++ ๊ฐ™์€ ์–ธ์–ด์—์„œ๋Š” ๋ฐฐ์—ด๊ณผ ๋ฒกํ„ฐ๋Š” ๋‹ค๋ฅด๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ List๋กœ ์“ฐ๋ฉด ๋œ๋‹ค. List ์ž์ฒด๊ฐ€ ์ด๋ฏธ **๋™์  ๋ฐฐ์—ด์„ ์ง€์›ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.** - -#### **3๏ธโƒฃ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ** - -1. ์‚ฝ์ž…/์‚ญ์ œ: O(1) -2. ํƒ์ƒ‰: O(N) - -![](https://velog.velcdn.com/images/prettylee620/post/d1b14dd7-77fb-4682-8a2a-088c7197e469/image.png) - -3. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ - -> ๐Ÿ‘‰ ์‹œ๊ฐ„๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ๋ฐฐ์—ด(List)์™€ ๋ฐ˜๋Œ€ ๋œ๋‹ค. (ํƒ์ƒ‰์„ ํ•˜๋ ค๋ฉด ์ˆœ๊ฐ„์ ์œผ๋กœ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์„ ์ฐ๊ณ  ์ฐ๊ณ  ๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์ด O(N)์ด ๋˜๊ณ , **์—ฐ๊ฒฐ ์ž์ฒด์˜ ์•ž๋’ค๋กœ ์ˆ˜์ •๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์‚ฝ์ž…/์‚ญ์ œ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1)์ด ๋œ๋‹ค.** - -๐Ÿ‘‰ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ๋ง‰ ์‚ฌ์šฉํ• ์ผ์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌํ˜„์—๋„ ๋งŽ์ด ์“ฐ์ด๋‹ˆ ์ด๋ก ์ƒ ์•Œ์•„๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. - -**(๋ฉด์ ‘์งˆ๋ฌธ์œผ๋กœ๋„ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒ ๋‹ค! ex) "์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ๋ฐ ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์“ธํ…๊ฐ€??")** - -#### **4๏ธโƒฃ ์Šคํƒ LIFO** - -1. ์‚ฝ์ž…/์‚ญ์ œ: O(1) - -> ๐Ÿ‘‰ Last In First Out ๐Ÿ‘‰ ํŒŒ์ด์ฌ์—์„œ ๊ตฌํ˜„์€ List๋กœ ํ•œ๋‹ค. - -```python -s = [1,2,3,4,5,6] - -while(len(s)>0): - print(s[-1]) - s.pop(-1) -``` - -์œ„์˜ ์ฝ”๋“œ ์ฒ˜๋Ÿผ ๊ตฌํ˜„ ๋˜๋ฉด ๋˜๋Š”๋ฐ, ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๊ฑฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฑฐ๋‹ค. - -#### **5๏ธโƒฃ ํ LILO** - -1. ์‚ฝ์ž…/์‚ญ์ œ: O(1) - -> ๐Ÿ‘‰ ์ค„์„œ๊ธฐ Last in Last Out ๐Ÿ‘‰ from collections import deque ๋กœ ์ž„ํฌํŠธํ•˜์—ฌ ๋ฐํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. - -```python -from collectionsimport deque - -q = deque() -q.append(1) -q.append(2) -q.append(3) - -while(len(q) >0): - print(q.popleft()) - -``` - -์œ„ ์ฝ”๋“œ์—์„œ ๋ณด๋ฉด popleft() ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ฒ˜์Œ์— ์žˆ๋Š” ๊ฐ’์„ ๋นผ๋Š”๋ฐ, ๋ฐํ๋Š” popright()๋ผ๋Š” ํ•จ์ˆ˜๋„ ์ง€์›ํ•œ๋‹ค. - -๐Ÿ‘‰ ๋˜ํ•œ **ํŒŒ์ด์ฌ์—๋Š” Queue๋„ ์žˆ๊ณ  Deque๋„ ์žˆ๋Š”๋ฐ Queue๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ๋„ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—ฌ์„œ Deque๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ž…์žฅ์ด๋ฏ€๋กœ Deque๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.** - -#### **6๏ธโƒฃ ์šฐ์„ ์ˆœ์œ„ํ(๋‚ด๋ถ€๊ฐ€ Heap์œผ๋กœ ๊ตฌ์„ฑ)** - -1. ์‚ฝ์ž…/์‚ญ์ œ : O(logN) - -```python -import heapq - -# ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•œ๋‹ค. -pq = [] -heapq.heappush(pq,3) -heapq.heappush(pq,1) -heapq.heappush(pq,2) - -while(len(pq) >0): - print(heapq.heappop(pq)) -``` - -๐Ÿ‘‰ **ํŒŒ์ด์ฌ์€ MinHeap** ์ด๋‹ค.(์ด์ง„ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„๋Š” ํ•ญ์ƒ ์ตœ์†Œ๊ฐ’์ธ) - -๐Ÿ‘‰ **์šฐ์„  ์ˆœ์œ„ ํ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” , ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์„ ๋„ฃ๊ณ  ๋บ„๋•Œ๋งˆ๋‹ค ์ ค ์ž‘์€ ๊ฐ’์ด๋‚˜ ์ ค ํฐ ๊ฐ’์„ ์•Œ์•„์•ผ ํ•  ๋•Œ ์จ์•ผ ํ•œ๋‹ค.** Sort() ๊ฐ™์€ ๊ฒฝ์šฐ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์ž์ฒด๋ฅผ ์ •๋ ฌํ•ด์ค€๋‹ค๋Š” ์ ์—์„œ ํฐ ์ฐจ์ด์ ์„ ๊ฐ€์ง„๋‹ค. - -#### **7๏ธโƒฃ Map(๋”•์…”๋„ˆ๋ฆฌ)** - -1. ์‚ฝ์ž…/์‚ญ์ œ: O(1) - -๐Ÿ‘‰ **ํŒŒ์ด์ฌ์€ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.** - -์ถ”๊ฐ€๋กœ, c++๊ฐ™์€ ๊ฒฝ์šฐ๋Š” O(logN)์ด ๋˜๋Š”๋ฐ ์ด๋Š” c++์˜ ๋งต์€ ์†์„ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด ์ด์ง„ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , python์˜ ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฒฝ์šฐ๋Š” ํ•ด์‹œ๋กœ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -#### **8๏ธโƒฃ ์ง‘ํ•ฉ(set)** - -์‚ฝ์ž…/์‚ญ์ œ: O(logN) - -๐Ÿ‘‰**์ค‘๋ณต์„ ์ œ๊ฑฐ**ํ•˜๋Š”๊ฒŒ ํฐ ํŠน์ง•! - -### 13) ๋น…์˜ค์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ๊นŒ์ง€ ๋‚˜์—ด - -1. `O(1)` - ์ƒ์ˆ˜ ์‹œ๊ฐ„(Constant Time): ์ž…๋ ฅ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ์†Œ์š” -2. `O(log n)` - ๋กœ๊ทธ ์‹œ๊ฐ„(Logarithmic Time): ์ž…๋ ฅ์˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด ๋กœ๊ทธ์˜ ํ˜•ํƒœ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„์ด ์†Œ์š” -3. `O(n)` - ์„ ํ˜• ์‹œ๊ฐ„(Linear Time): ์ž…๋ ฅ ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ์‹œ๊ฐ„์ด ์„ ํ˜•์œผ๋กœ ์ฆ๊ฐ€ -4. `O(n log n)` - ์„ ํ˜• ๋กœ๊ทธ ์‹œ๊ฐ„(Linearithmic Time): n๊ณผ log n์˜ ๊ณฑ๋งŒํผ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ -5. `O(n^2)` - ์ด์ฐจ ์‹œ๊ฐ„(Quadratic Time): ์ž…๋ ฅ ํฌ๊ธฐ์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•˜์—ฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ -6. `O(n^k)` - ๋‹คํ•ญ ์‹œ๊ฐ„(Polynomial Time): ์ž…๋ ฅ ํฌ๊ธฐ์˜ k ์ œ๊ณฑ์— ๋น„๋ก€ํ•˜๋Š” ์‹œ๊ฐ„์ด ์†Œ์š”(k๋Š” ์ƒ์ˆ˜). -7. `O(2^n)` - ์ง€์ˆ˜ ์‹œ๊ฐ„(Exponential Time): ์ž…๋ ฅ ํฌ๊ธฐ์— ๋Œ€ํ•ด ์ง€์ˆ˜์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ -8. `O(n!)` - ํŒฉํ† ๋ฆฌ์–ผ ์‹œ๊ฐ„(Factorial Time): ์ž…๋ ฅ ํฌ๊ธฐ์˜ ํŒฉํ† ๋ฆฌ์–ผ์— ๋น„๋ก€ํ•˜๋Š” ์‹œ๊ฐ„์ด ์†Œ์š” diff --git a/developLog/algorithm-datastructure/data-structure/biginteger.md b/developLog/algorithm-datastructure/data-structure/biginteger.md deleted file mode 100644 index 10fe88f..0000000 --- a/developLog/algorithm-datastructure/data-structure/biginteger.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -description: BigInteger์— ๋Œ€ํ•œ ์ •๋ฆฌ ๊ธ€ ---- - -# BigInteger์— ๋Œ€ํ•œ ์ •๋ฆฌ - -## 1. BigInteger๋ž€? - -> `BigInteger`๋Š” ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋กœ, ์ž„์˜ ์ •๋ฐ€๋„ ์ •์ˆ˜(arbitrary-precision integers)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. - -์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(int, long ๋“ฑ)์€ ํฌ๊ธฐ์— ์ œํ•œ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, int๋Š” 32๋น„ํŠธ์ด๋ฏ€๋กœ ์ตœ๋Œ€๊ฐ’์€ 2์˜ 31์Šน - 1์ด ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ BigInteger๋Š” ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งค์šฐ ํฐ ์ •์ˆ˜ ๊ฐ’๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ!! - -### 1) ์žฅ์  - -BigInteger ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ •์ˆ˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค - -* ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ, ๊ณฑํ•˜๊ธฐ -* ๋‚˜๋ˆ„๊ธฐ, ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ -* ๊ฑฐ๋“ญ์ œ๊ณฑ -* ๋น„ํŠธ ์—ฐ์‚ฐ -* ๋น„๊ต - -์˜ˆ๋ฅผ ๋“ค์–ด, ์•„์ฃผ ํฐ ๋‘ ์ •์ˆ˜๋ฅผ ๋”ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, int๋‚˜ long์œผ๋กœ๋Š” ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, BigInteger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. - -> ์ฆ‰, ์—ฐ์‚ฐ ๋ฉ”์„œ๋“œ๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ - -### 2) ๋‚ด์žฅ๋œ ๋ฉ”์„œ๋“œ ์ •๋ฆฌ - -> [์ฐธ๊ณ ๋ฌธ์„œ](https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html) - -1. **add(BigInteger val)**: ํ˜„์žฌ BigInteger์™€ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger๋ฅผ ๋”ํ•œ๋‹ค. -2. **subtract(BigInteger val)**: ํ˜„์žฌ BigInteger์—์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger๋ฅผ ๋บ€๋‹ค. -3. **multiply(BigInteger val)**: ํ˜„์žฌ BigInteger์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger๋ฅผ ๊ณฑํ•œ๋‹ค. -4. **divide(BigInteger val)**: ํ˜„์žฌ BigInteger๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger๋กœ ๋‚˜๋ˆˆ๋‹ค. ๋ชซ์„ ๋ฐ˜ํ™˜ -5. **remainder(BigInteger val)**: ํ˜„์žฌ BigInteger๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ -6. **pow(int exponent)**: ํ˜„์žฌ BigInteger๋ฅผ ์ง€์ˆ˜๋กœ ์ œ๊ณฑ -7. **abs()**: ํ˜„์žฌ BigInteger์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ -8. **negate()**: ํ˜„์žฌ BigInteger์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พผ๋‹ค. -9. **compareTo(BigInteger val)**: ํ˜„์žฌ BigInteger๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ BigInteger์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๊ฐ™์œผ๋ฉด 0, ํ˜„์žฌ BigInteger๊ฐ€ ํฌ๋ฉด ์–‘์ˆ˜, ์ž‘์œผ๋ฉด ์Œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. -10. **equals(Object x)**: ํ˜„์žฌ BigInteger์™€ ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. -11. **toString()**: BigInteger๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - -## ๐Ÿค” ์™œ? ์ฐพ์•„๋ดค๋Š”๋ฐ? - -### 1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ - -> [์—„์ฒญ๋‚œ ๋ถ€์ž2](https://www.acmicpc.net/problem/1271) - -![](https://velog.velcdn.com/images/prettylee620/post/bbf184a6-b64e-4960-af65-6f1f55f95263/image.png) - -์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์€ ![](https://velog.velcdn.com/images/prettylee620/post/1fce6176-b174-4d35-bba0-ac9cbf39aba7/image.png) - -์ด๊ฑฐ์ž„!! - -๊ทผ๋ฐ ๋‚˜๋Š” ํ’€์ด ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ๊ฑธ ๋ฌธ์ œ ์‚ผ๊ณ  ์žˆ์—ˆ๋‹ค. - -### 2) ํ•ด๊ฒฐ๊ณผ์ • - -#### 1.InputMismatch ๋Ÿฐํƒ€์ž„์—๋Ÿฌ - -![](https://velog.velcdn.com/images/prettylee620/post/1a9abcba-45e0-498f-b82a-854f8c2a1195/image.png) - -์ด ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋Š” InputMismatchException์€ **์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ˆ์ƒํ•œ ํ˜•์‹๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ**๋กœ, ์ด ์˜ˆ์™ธ๋Š” ์ฃผ๋กœ Scanner ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ ํŒŒ์‹ฑํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. - -```java -import java.util.Scanner; - -public class Main { - public static void main(String[] args) { - - int m = 0; - int n = 0; - - try { - Scanner in = new Scanner(System.in); - - m = in.nextInt(); - n = in.nextInt(); - - int result = m / n; - int remainder = m % n; - - System.out.println(result); - System.out.println(remainder); - } catch (Exception e) { - e.printStackTrace(); - } - } -} -``` - -> ์—ฌ๊ธฐ์„œ ์Œ... int์— ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด์„œ long์œผ๋กœ ๋ฐ”๊ฟจ์Œ - -```java -import java.util.Scanner; - -public class Main { - public static void main(String[] args) { - - long m = 0; - long n = 0; - - Scanner in = new Scanner(System.in); - - m = in.nextLong(); - n = in.nextLong(); - - long result = m / n; - long remainder = m % n; - - System.out.println(result); - System.out.println(remainder); - - - } -} -``` - -๊ทธ๋Ÿฌ๋‚˜.. ๋˜‘๊ฐ™์•˜๊ณ ... ์ฐพ์•„๋ณด๋‹ˆ ์ผ๋ฐ˜ ํƒ€์ž…์œผ๋กœ๋Š” ์•ˆ๋˜์—ˆ๋˜ ๊ฒƒ... BigInteger์ด ํ•„์š”ํ–ˆ๋‹ค. - -#### 2. NoSuchElement ๋Ÿฐํƒ€์ž„์—๋Ÿฌ - -![](https://velog.velcdn.com/images/prettylee620/post/176c2c3e-7553-463b-bc43-985d898bdd6c/image.png) - -NoSuchElement ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋Š” Scanner ๊ฐ์ฒด์—์„œ nextLine() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ ์ฝ์„ ์š”์†Œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋กœ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž…๋ ฅ์ด ๋๋‚œ ํ›„์— ๋˜ ๋‹ค์‹œ ์ž…๋ ฅ์„ ์š”๊ตฌํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. - -์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์ž…๋ ฅ์„ ๋งˆ์น˜๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ!! - -```java -import java.util.Scanner; -import java.math.BigInteger; - -public class Main { - public static void main(String[] args) { - - String m; - String n; - - Scanner in = new Scanner(System.in); - - BigInteger number1; - BigInteger number2; - - try{ - m = in.nextLine(); - n = in.nextLine(); - - number1 = new BigInteger(m); - number2 = new BigInteger(n); - - BigInteger result = number1.divide(number2); - BigInteger remainder = number1.remainder(number2); - - System.out.println(result); - System.out.println(remainder); - } - catch (NumberFormatException e) { - System.out.println("์˜ฌ๋ฐ”๋ฅธ ์ˆซ์ž ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค."); - } - - } -} -``` - -์ฆ‰, `nextLine`์œผ๋กœ ๋ฐ›์•„์„œ ๊ทธ๋Ÿผ - -### 3) ์ตœ์ข… ์ฝ”๋“œ - -```java -import java.util.Scanner; -import java.math.BigInteger; - -public class Main { - public static void main(String[] args) { - - String m; - String n; - - Scanner in = new Scanner(System.in); - - BigInteger number1; - BigInteger number2; - - try{ - m = in.next(); - n = in.next(); - - number1 = new BigInteger(m); - number2 = new BigInteger(n); - - BigInteger result = number1.divide(number2); - BigInteger remainder = number1.remainder(number2); - - System.out.println(result); - System.out.println(remainder); - } - catch (NumberFormatException e) { - System.out.println("์˜ฌ๋ฐ”๋ฅธ ์ˆซ์ž ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค."); - } - catch (ArithmeticException e) { - System.out.println("0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."); - } - - } -} -``` - -## ์†Œ๊ฐ - -ํ•ญ์ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ ๋ฏธ๋ค˜๋Š”๋ฐ.. ํŒŒ์ด์ฌ์œผ๋กœ ํ•˜๊ธฐ ์ „์— ํšŒ์‚ฌ์—์„œ ์ž๋ฐ”์“ฐ๋‹ˆ๊นŒ ์ž๋ฐ”๋กœ ๊ณต๋ถ€ํ•ด๋ด์•ผ์ง€ diff --git a/developLog/algorithm-datastructure/data-structure/undefined-1.md b/developLog/algorithm-datastructure/data-structure/undefined-1.md deleted file mode 100644 index 02e6831..0000000 --- a/developLog/algorithm-datastructure/data-structure/undefined-1.md +++ /dev/null @@ -1,120 +0,0 @@ -# ์Šคํƒ๊ณผ ํ - -> ์ถœ์ฒ˜ : https://www.youtube.com/watch?v=Nk\_dGScimz8 - -## 1. ๋“ค์–ด๊ฐ€๊ธฐ ์ „ - -> ์Šคํƒ๊ณผ ํ๋Š” ์šฐ๋ฆฌ์˜ ์ƒ์ƒ์—๋งŒ ์กด์žฌ ์‹ค์ œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์—์„œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Œ ์Šคํƒ๊ณผ ํ๋Š” **์ผ์ข…์˜ ๊ทœ์น™** - -### ์ถ”์ƒ์  ์ž๋ฃŒ๊ตฌ์กฐ - -* ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ฐฉ๋ฒ•์ด ์ฝ”๋“œ๋กœ ์ •์˜ ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ๊ตฌ์กฐ์˜ ํ–‰๋™ ์–‘์‹์—๋งŒ ์„ค๋ช… -* ์Šคํƒ๊ณผ ํ๋Š” **๊ฒฐ๊ตญ ๋ฐฐ์—ด ์œ„์— ์–ด๋–ค ๊ทœ์น™์„ ์„ค์ •ํ•œ ๋ชจ์Šต** - -## **2. ์Šคํƒ** - -### 1) **์Šคํƒ์˜ ๊ฐœ๋…** - -์Šคํƒ์€ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋Š” **`LIFO(Last-In-First-Out)`** ํ˜•์‹์˜ ์ž๋ฃŒ ๊ตฌ์กฐ - -* **`์„ ์ž…ํ›„์ถœ`** ๊ตฌ์กฐ ๋˜๋Š” **`ํ›„์ž… ์„ ์ถœ`** ๊ตฌ์กฐ : ๋ฐ•์Šค๋Š” ์•„๋ž˜๋ถ€ํ„ฐ ์œ„๋กœ ์Œ“๋Š”๋ฐ ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ๋ฐ•์Šค๋ฅผ ์น˜์šฐ๊ธฐ ์œ„ํ•ด์„œ ์œ„์— ์žˆ๋Š” ๋ฐ•์Šค๋ถ€ํ„ฐ ๋‚ด๋ ค์•ผ ํ•จ -* stack.append() : **์‚ฝ์ž…(PUSH)**, stack.pop() : **์‚ญ์ œ(POP)** -* print(stack\[::-1]) : ์ตœ์ƒ๋‹จ ์›์†Œ๋ถ€ํ„ฐ ์ถœ๋ ฅ -* print(stack) : ์ตœํ•˜๋‹จ ์›์†Œ๋ถ€ํ„ฐ ์ถœ๋ ฅ(๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋“ค) - -### 2) ์˜ˆ์‹œ - -* ํŒฌ์ผ€์ดํฌ๋ฅผ ์œ„๋กœ ์Œ“๋Š”๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ๋ง‰ ๋งŒ๋“  ๊ฑธ ์œ„๋กœ ์˜ฌ๋ฆผ ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— ์˜ฌ๋ฆฐ ๊ฑฐ\[Last in] ๋จผ์ € ๋จน๋Š”\[First Out] ํ˜•์‹ - -### 3) **์Šคํƒ์˜ ๊ตฌ์กฐ** - -* **ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ** PUSH์™€ POP์„ ์ด์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๊บผ๋‚ธ๋‹ค -* TOP์€ ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ, **์Šคํƒ ํฌ์ธํ„ฐ**๋กœ ๋ถˆ๋ฆฐ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/2dcc061c-d90c-45fc-ac02-13c3e9973105/image.png) - -### 4) **์Šคํƒ ์‘์šฉ ๋ถ„์•ผ** - -* **์ธํ„ฐ๋ŸฝํŠธ์˜ ์ฒ˜๋ฆฌ** : ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด ์œ„์น˜๋ฅผ ์Šคํƒ์— pushํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์ƒํ™ฉ ์ฒ˜๋ฆฌ ํ›„ ์Šคํƒ์—์„œ pop์„ ํ†ตํ•ด ์ „์— ์ง„ํ–‰์ค‘์ด๋˜ ๊ฒƒ์„ ๋ฐ›์•„์˜ด, **์„œ๋ธŒ๋ฃจํ‹ด ํ˜ธ์ถœ ์ž‘์—…** -* **ํ•จ์ˆ˜ ํ˜ธ์ถœ(์žฌ๊ท€ ํ˜ธ์ถœ ํฌํ•จ)** : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ์‹œ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด ์ฃผ์†Œ๋ฅผ ์Šคํƒ์— ์ €์žฅ -* **ํ›„์œ„ํ‘œํ˜„ ์—ฐ์‚ฐ** : postifix ๊ณ„์‚ฐ์‹œ ์‚ฌ์šฉ -* **๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS : Depth-First Search)** : ๊นŠ์ด ๋‚ด๋ ค๊ฐˆ ๋•Œ๋งˆ๋‹ค ์Šคํƒ์— ๊ฐ’์„ pushํ•˜๊ณ , ๋” ์ด์ƒ ๊นŠ์ด ๊ฐˆ ๊ณณ์ด ์—†์„ ๊ฒฝ์šฐ ์Šคํƒ์—์„œ popํ•œ ๋…ธ๋“œ์™€ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ์Œ -* ํƒ์ƒ‰์„ ํ•˜๊ณ  ์žˆ๋Š” ๋ถ„๊ธฐ์—์„œ **์™„๋ฒฝํ•˜๊ฒŒ ํƒ์ƒ‰์„ ํ•œ ์ดํ›„** ๋‹ค๋ฅธ ๋ถ„๊ธฐ๋ฅผ ํƒ์ƒ‰ - -![](https://velog.velcdn.com/images/prettylee620/post/a30c0618-c8b7-4091-bc49-b0205ad71469/image.png) - -### 5) **BFS๋ž€** - -* ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ -* **๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰** -* ์„ ์ž…์„ ์ถœ ๋ฐฉ์‹์ธ ํ ์ž๋ฃŒ๊ตฌ์กฐ ์ด์šฉ -* ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ๋„ฃ์€ ๋‹ค์Œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ ํ›„ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ด๊ณ  ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ ๋ชจ๋‘๋ฅผ ํ์— ์‚ฝ์ž… -* ์‹ค์ œ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ DFS๋ณด๋‹ค ์ข‹์€ ํŽธ -* **A(์ธ์ ‘ํ•œ B, C, D๋ฐฉ๋ฌธ) > B -> C -> D -> E(B์— ์ธ์ ‘ํ•œ)** **> F(C์— ์ธ์ ‘ํ•œ) > G(F์— ์ธ์ ‘ํ•œ)** - -## **3. ํ(Queue)** - -### **1) ํ์˜ ๊ฐœ๋…** - -: ํ๋Š” ํ•œ์ชฝ ๋์—์„œ๋Š” ์‚ฝ์ž… ์ž‘์—…์ด ์ด๋ค„์ง€๊ณ , ๋ฐ˜๋Œ€์ชฝ ๋์—์„œ๋Š” ์‚ญ์ œ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€ **`FIFO(First-In-First-Out)`** ํ˜•์‹์˜ ์ž๋ฃŒ ๊ตฌ์กฐ - -* ๋Œ€๊ธฐ์ค„์— ๋น„์œ  -* **์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ** : ๋‚˜์ค‘์— ์˜จ ์‚ฌ๋žŒ์ผ์ˆ˜๋ก ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ€๋Š” ๊ณต์ •ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ -* queue.append(): ์‚ฝ์ž…, `queue.popleft()` : ์‚ญ์ œ - -#### ์˜ˆ์‹œ - -* ์ค„ ๋งจ ์•ž์— ์„œ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๊ฐ€์žฅ ๋จผ์ € ๋ฒ„์Šค๋ฅผ ํƒ€๋Š” ์›๋ฆฌ -* ํ **๋’ค์—** ์š”์†Œ๋ฅผ `์ถ”๊ฐ€` -* ํ **์•ž์—** ์š”์†Œ๋ฅผ `์ œ๊ฑฐ`\[First Out] - -### **2) ํ ๊ตฌ์„ฑ๋„** - -![](https://velog.velcdn.com/images/prettylee620/post/eceea723-6e1a-42d8-81e6-0e7c7ab0508a/image.png) - -* ํ•œ์ชฝ์—์„œ๋Š” **ENQUEUE ์—ฐ์‚ฐ**์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ํ•œ์ชฝ์—์„œ๋Š” **DEQUEUE๋กœ ์—ฐ์‚ฐ**์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/b7b02c3f-9aeb-4fa0-8be7-9b5e6c240561/image.png) - -* ๋ฐ์ดํ„ฐ๊ฐ€ **๊บผ๋‚ด๋Š” ์ชฝ์—์„œ** ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๋ฅผ `Front[์•ž]`๋ผ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ **๋„ฃ๋Š” ์ชฝ์—** ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๋ฅผ `Rear[๋’ค]`์ด๋ผ๊ณ  ํ•จ - -## **4. ํ…Œํฌ** - -### **1) ํ…Œํฌ(Deque:Double Ended Queue)์˜ ๊ฐœ๋…** - -![](https://velog.velcdn.com/images/prettylee620/post/5a1ed890-219c-4f66-abb5-115c682cc3b5/image.png) - -: ํ…Œํฌ๋Š” ํ์˜ ์–‘์ชฝ ๋์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ - -### **2) ํ…Œํฌ์˜ ๊ตฌ์„ฑ๋„** - -* ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์–‘์ชฝ์˜ ์‚ญ์ œ/์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. -* ๋ฐํฌ๋ฅผ ์ด์šฉํ•œ ์Šคํƒ๊ณผ ํ์˜ ๊ตฌํ˜„ ๊ฐ€๋Šฅ -* PUSH : ์‚ฝ์ž… POP : ๋ฐํฌ์—์„œ Fornt์™€ Rear์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๋Š” ์—ฐ์‚ฐ - -## 5. ๊ทธ๋ž˜์„œ ์–ธ์ œ ์“ฐ๋Š”๋ฐ? - -#### ์Šคํƒ - -1. ๋’ค๋กœ๊ฐ€๊ธฐ - -* ๋’ค๋กœ ๊ฐ€๊ธฐ๋ฅผ ๋ˆ„๋ฅธ๋‹ค๋Š” ๊ฒƒ์€ ์›นํŽ˜์ด์ง€ ํžˆ์Šคํ† ๋ฆฌ ์Šคํƒ์˜ ๋งจ ์œ„์—์„œ ํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ ๊ฐ€๋Š” ๊ฒƒ - -![](https://velog.velcdn.com/images/prettylee620/post/fb9e92c5-18d6-4956-a3d2-42d8df67cc2c/image.png) - -2. ๋˜๋Œ๋ฆฌ๊ธฐ : ctrl + z - -* ์œ ์ €ํ•˜๋Š” ํ–‰๋™์„ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“๋‹ค๊ฐ€ ๋˜๋Œ๋ฆฌ๊ธฐ ์ˆœ๊ฐ„ ์Šคํƒ์œผ๋กœ ๊ฐ€์‚ฌ ๊ณผ๊ฑฐ๋ฅผ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” - -![](https://velog.velcdn.com/images/prettylee620/post/7ae90aa8-a7af-4e1e-aa9d-1a0340b64705/image.png) - -#### ํ - -1. ์ด๋ฉ”์ผ ์ „๋‹ฌ -2. ํ‘ธ์‰ฌ ์•Œ๋ฆผ ๊ธฐ๋Šฅ -3. ์‡ผํ•‘๋ชฐ์—์„œ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ -4. ์ฝœ์„ผํ„ฐ์˜ ๋ฐฑ์—”๋“œ(์ „ํ™” ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ) - -## ๊ฒฐ๋ก  - -> ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ทœ์น™์„ ์ œ๊ณตํ•˜๊ณ  ๋•๋ถ„์— ์ž๋ฃŒ๋ฅผ ์ข€ ๋” ๊ตฌ์กฐ์ ์œผ๋กœ ์ƒ๊ฐ ๊ฐ€๋Šฅ diff --git a/developLog/algorithm-datastructure/data-structure/undefined-2.md b/developLog/algorithm-datastructure/data-structure/undefined-2.md deleted file mode 100644 index 7698ccb..0000000 --- a/developLog/algorithm-datastructure/data-structure/undefined-2.md +++ /dev/null @@ -1,373 +0,0 @@ -# ์žฌ๊ท€ํ•จ์ˆ˜ - -## 1. ์žฌ๊ท€ํ•จ์ˆ˜ - -### ๐Ÿ‡ ์žฌ๊ท€ํ•จ์ˆ˜๋ž€? - -* ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜ : **recursive\_function()** -* ํŠน์ •ํ•œ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ์ž์‹ ์„ ํฌํ•จ -* **์žฌ๊ท€ํ•จ์ˆ˜**๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋™์ผ - - โ‡’ ์ด์œ  : ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ˜ธ์ถœ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœํ•˜๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰์„ ๋๋‚ด์•ผ ๊ทธ ์•ž์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ -* ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒ๋‹น์ˆ˜๋Š” **์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉ**ํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ - -1. ํŒŒ์ด์ฌ ์˜ˆ์ œ - -![](https://velog.velcdn.com/images/prettylee620/post/321d34d4-fcd7-4798-a87b-339b7440d1fb/image.png) - -* ๋ฌธ์ž์—ด์ด ๋ฌดํ•œํžˆ ์ถœ๋ ฅํ•˜๋‹ค๊ฐ€ ์žฌ๊ท€์˜ ์ตœ๋Œ€ ๊นŠ์ด ์ดˆ๊ณผ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋œธ - -```python -def recursive_function(): # def๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์•ฝ์–ด - print('์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.') - recursive_function() - -recursive_function() -``` - -### ๐Ÿ‡ ์ž์—ฐ์ˆ˜(์–‘์˜ ์ •์ˆ˜) - -* 1์€ ์ž์—ฐ์ˆ˜ -* ์ž์—ฐ์ˆ˜ n์˜ ๋ฐ”๋กœ ๋‹ค์Œ ์ •์ˆ˜๋„ ์ž์—ฐ์ˆ˜์ด๋‹ค. - -### ๐Ÿ‡์ •๋ ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋ณ‘ํ•ฉ, ํ€ต ์ •๋ ฌ) - -* ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ ํ™œ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋‹ค. - -#### ์ ‘๊ทผ ๋ฐฉ์‹ - -1. ํŒฉํ† ๋ฆฌ์–ผ ๊ตฌํ•˜๊ธฐ - -* ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์˜ ํŒฉํ† ๋ฆฌ์–ผ๊ฐ’ - -```java - -0! = 1 -n>0 ์ด๋ฉด n! = n x (n-1)! - -5! -5x4x3x2x1= 120 - -int result = 0 -for(int i = 5; i<0;i--){ -result = result * i; - -} -``` - -#### ์žฌ๊ท€ํ˜ธ์ถœ(recursive call) - -* ์ž์‹ ๊ณผ ๋˜‘๊ฐ™์€ ๊ตฌ์กฐ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹ -* ๋ฌธ์ œ) 0 ์ด์ƒ์˜ ๋‘์ •์ˆ˜ n, m ์ด ์ฃผ์–ด์กŒ์„๋•Œ n ๊ตฌํ•˜์‹œ์˜ค - -#### ์žฌ๊ท€ ์ ‘๊ทผ - -1. ์ƒํƒœ ์ •์˜ - -* ์žฌ๊ท€๋Š” ๋ถ€๋ถ„๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ’€์ด ๋ฐฉ๋ฒ• -* ๋ถ€๋ถ„๋ฌธ์ œ๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ด์–ด ํ•˜๋‚˜์˜ ๋‹ต์„ ๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. -* ๋‹ต์„ ๋‚ด๋Š”๋ฐ๋Š” ์ž…๋ ฅ๋˜๋Š” ๋ณ€์ˆ˜ -* ์ด๋ ‡๊ฒŒ ๋‹ต์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ `์ƒํƒœ(state)` -* ํ•˜๋‚˜์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ๋Š” ๋ฌธ์ œ -* 2๊ฐœ์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ƒํƒœ(n,m) ์ •์˜ํ•˜์—ฌ ํ‘œ๊ธฐ - -2. ์ข…๋ฃŒ ์กฐ๊ฑด - -* ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์„ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋‹ค๊ฐ€ ์–ธ์  ๊ฐ€๋Š” ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค. -* ๋‹ต์ด ๋‚˜์˜ค๋Š” ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ข…๋ฃŒ์กฐ๊ฑด -* n์˜ 0์ œ๊ณฑ์„ ๊ตฌํ• ๋•Œ (m=0) ๋‹ต 1 -* 0์˜ m์ œ๊ณฑ ๊ตฌํ• ๋•Œ(n=0) 1 -* 1์˜ m์ œ๊ณฑ (n= 1) 1 - -```java -(n,0) = 1 -(0,m) =1 -(1,m) =1 -(n,m) = n*(n,m-1) -``` - -### ๐Ÿ‡ ๊ฑฐ๋“ญ ์ œ๊ณฑ ๊ฐ’ ๊ตฌํ•˜๊ธฐ - -![](https://velog.velcdn.com/images/prettylee620/post/8b722d03-c871-4582-9487-7e30d91951bc/image.png) - -```java -import java.util.Scanner; - -public class powerEx { - private static int power(int n, int m){ - if (m == 0 ) return 1; - if (n == 0) return 1; - if (n==0) return 1; - return n*power(n, m-1); - } - - public static void main(String[] args){ - Scanner in = new Scanner(System.in); - int n = in.nextInt(); - int m = in.nextInt(); - - int result = power(n, m); - System.out.printf("%d์˜ %d ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ฐ’ : %d", n, m, result); - } -} -``` - -### ๐Ÿ‡ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ - -![](https://velog.velcdn.com/images/prettylee620/post/8c81b407-4431-4c79-a572-2fab6f6f4d7c/image.png) - -```java -import java.util.Scanner; - -public class Gcd { - - private static int gCD(int x, int y){ - if(y == 0) return x; - else return gCD(y, x%y); - } - - public static void main(String[] args){ - Scanner in = new Scanner(System.in); - int n = in.nextInt(); - int m = in.nextInt(); - - int result = gCD(n, m); - System.out.printf("%d์˜ %d ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ : %d", n, m, result); - } -} -``` - -### ๐Ÿ‡ ํ•˜๋…ธ์˜์˜ ํƒ‘ - -> ์„ธ ๊ฐœ์˜ ๊ธฐ๋‘ฅ๊ณผ ์›ํŒ๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํ•œ ๊ธฐ๋‘ฅ์—์„œ ๋‹ค๋ฅธ ๊ธฐ๋‘ฅ์œผ๋กœ ๋ชจ๋“  ์›ํŒ์„ ์˜ฎ๊ธฐ๋Š” ๋ฌธ์ œ์ด๋ฉฐ, ์›ํŒ๋“ค์€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ, ํฐ ์›ํŒ ์œ„์— ์ž‘์€ ์›ํŒ์ด ์˜ฌ๋ผ๊ฐ€์•ผ ํ•œ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/85c684c3-b80c-48d8-ad9d-8f87597e512f/image.png) - -> ํ•ต์‹ฌ : ๋ชฉํ‘œ๋Š” ๋ชจ๋“  ์›ํŒ์„ ๊ธฐ๋‘ฅ A์—์„œ ๊ธฐ๋‘ฅ C๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ - -1. ๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/12946 -2. ๊ทœ์น™ - 1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์›ํŒ๋งŒ ์ด๋™ ๊ฐ€๋Šฅ - 2. ํฐ ์›ํŒ ์œ„์— ์ž‘์€ ์›ํŒ ์˜ฌ๋ฆด ์ˆ˜ ์—†์Œ - 3. ์–ด๋–ค ๊ธฐ๋‘ฅ ์œ„์— ์žˆ๋Š” ์›ํŒ์€ ๊ทธ ๊ธฐ๋‘ฅ์œผ๋กœ๋งŒ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ -3. ๋ถ„์„ - -> ๊ฒฐ๋ก  - -* ์›ํŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ์ผ ๊ฒฝ์šฐ : ๋ฐ”๋กœ ๊ธฐ๋‘ฅ A์—์„œ ๊ธฐ๋‘ฅ C๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. -* ์›ํŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ : - -1. ๊ฐ€์žฅ ์ž‘์€ ์›ํŒ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์›ํŒ๋“ค์„ ๊ธฐ๋‘ฅ A์—์„œ ๊ธฐ๋‘ฅ B๋กœ ์˜ฎ๊ธด๋‹ค. -2. ๊ฐ€์žฅ ํฐ ์›ํŒ์„ ๊ธฐ๋‘ฅ A์—์„œ ๊ธฐ๋‘ฅ C๋กœ ์˜ฎ๊ธด๋‹ค. -3. ๊ธฐ๋‘ฅ B์— ์žˆ๋Š” ์›ํŒ๋“ค์„ ๊ธฐ๋‘ฅ C๋กœ ์˜ฎ๊ธด๋‹ค. -4. ์ƒํƒœ(๋ณ€์ˆ˜) - -* ์˜ฎ๊ธฐ๋ ค๋Š” ์›ํŒ์˜ ๊ฐœ์ˆ˜ n -* ์›ํŒ์ด ํ˜„์žฌ ์œ„์น˜ํ•˜๋Š” ๊ธฐ๋‘ฅ๊ฐ’ from -* ์›ํŒ์ด ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋‘ฅ to(n, from, to) -* ex. ์›ํŒ n๊ฐœ๋ฅผ ๊ธฐ๋‘ฅ 1์—์„œ ๊ธฐ๋‘ฅ 3์œผ๋กœ ์˜ฎ๊ฒจ๋ผ! (n, 1, 3) - * (n, from, to) โ‡’ ์›ํŒ n๊ฐœ๋ฅผ ๊ธฐ๋‘ฅ from์—์„œ ๊ธฐ๋‘ฅ to ์˜ฎ๊ธฐ๋Š” ๊ณผ์ • - -2. ์ข…๋ฃŒ์กฐ๊ฑด - -* ์›ํŒ์ด 1์ผ ๋•Œ ์ข…๋ฃŒ -* (1, form, to) = \[from, to] โ‡’ ์›ํŒ์ด 1๊ฐœ์ผ ๋•Œ๋Š” from์—์„œ to๋กœ ์˜ฎ๊ฒจ๋ผ - -3. ์ ํ™”์‹ - -* ์ƒํƒœ : (n, from, to) -* ์ข…๋ฃŒ : (1, from, to) -* ์ „์ด์ƒํƒœ : (n-1, from, to) - -4 . ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.List; - -class Solution { - -private List hanoi(int n, int from, int to){ - if(n == 1) return List.of(new int[] {from, to}); //์ข…๋ฃŒ์กฐ๊ฑด n==1 ์ผ๋•Œ from to ์ด๋™๋งŒ ์‹œ์ผœ๋ผ - - //์ ํ™”์‹ ๊ตฌํ˜„ - int empty = 6 - from - to; - - List result = new ArrayList<>(); - result.addAll(hanoi(n-1,from,empty)); - result.addAll(hanoi(1,from,to)); - result.addAll(hanoi(n-1,empty,to)); - return result; - - } - - - public int[][] solution(int n) { - return hanoi(n,1,3).toArray(new int[0][]); - } -} -``` - -5. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ - -```java -import java.util.Arrays; - -class Hanoi { - public int[][] hanoi(int n) { - // 2์ฐจ์› ๋ฐฐ์—ด์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. - int[][] answer = {{1,3}}; - - System.out.println(n); - - return answer; - } - - // ์•„๋ž˜๋Š” ํ…Œ์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•ด ๋ณด๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. - public static void main(String[] args) { - Hanoi h = new Hanoi(); - System.out.println(Arrays.toString(h.hanoi(2))); - } -} -``` - -### ๐Ÿ‡ ํ•˜๋…ธ์˜ ์›๋ฐ˜์˜ ๊ฐœ์ˆ˜ - -* ํ•˜๋…ธ์ด ํƒ‘์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ - -![](https://velog.velcdn.com/images/prettylee620/post/76ce5015-3a6c-4c52-a247-a838c7cbf097/image.png) - -```java -// ํ•˜๋…ธ์ด์˜ ํƒ‘ -package recurive; -import java.util.Scanner; - -class Hanoi { - //--- no๊ฐœ์˜ ์›๋ฐ˜์„ x๋ฒˆ ๊ธฐ๋‘ฅ์—์„œ y๋ฒˆ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊น€ ---// - static void move(int no, int x, int y) { - if (no > 1) - move(no - 1, x, 6 - x - y); - - System.out.printf("์›๋ฐ˜[%d]๋ฅผ %d๋ฒˆ ๊ธฐ๋‘ฅ์—์„œ %d๋ฒˆ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊น€\n", no, x, y); - - if (no > 1) - move(no - 1, 6 - x - y, y); - } - - public static void main(String[] args) { - Scanner stdIn = new Scanner(System.in); - - System.out.println("ํ•˜๋…ธ์ด์˜ ํƒ‘"); - System.out.print("์›๋ฐ˜์˜ ๊ฐœ์ˆ˜ : "); - int n = stdIn.nextInt(); - - move(n, 1, 3); // ์ œ 1 ๊ธฐ๋‘ฅ์— ์Œ“์ธ n๊ฐœ๋ฅผ ์ œ 3 ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊น€ - } -} -``` - -### ๐Ÿ‡ ๋ชจ์Œ ์‚ฌ์ „ - -ํ•ด์„ค : https://ksb-dev.tistory.com/273 - -* A, E, I, O, U ๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ 5์ž๋ฆฌ ์ด๋‚ด์˜ ๋ฌธ์ž๋ฅผ ๋งŒ๋“ค๊ณ , ์ •๋ ฌํ•˜์—ฌ ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž๊ฐ€ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ -* ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” "A"์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” "AA"์ด๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋‹จ์–ด๋Š” "UUUUU" - -1. ๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/84512 -2. ๋ถ„์„ - -* ์ƒํƒœ(word) : (word)๋กœ ์‹œ์ž‘๋˜๋Š” ๋ชจ๋“  ๋‹จ์–ด -* ์ข…๋ฃŒ์กฐ๊ฑด : (๊ธธ์ด๊ฐ€ 5์ธ word) = word -* ์ ํ™”์‹(word) =\[word]+\[word+'A']+\[word+'E']+\[word+'I']+\[word+'O']+\[word+'U'] -* ์ข…๋ฃŒ์กฐ๊ฑด 5์ผ ๋•Œ, ๋ฐ”๋กœ word ๋ฐ˜ํ™˜ -* ๋ถ€๋ถ„๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ - -```java -private List generate(String word){ - //์ข…๋ฃŒ ์กฐ๊ฑด, ์ ํ™”์‹ ๊ตฌํ˜„ -} - -// ์ข…๋ฃŒ์กฐ๊ฑด 5์ผ ๋•Œ, ๋ฐ”๋กœ word ๋ฐ˜ํ™˜ -private List generate(String word){ - //์ข…๋ฃŒ ์กฐ๊ฑด , ์ ํ™”์‹ ๊ตฌํ˜„ - List wrods = new ArrayList<>(); - words.add(word); - if(word.length() == 5) return words; - - //์ ํ™”์‹ - } -``` - -```java -private List generate(String word){ - //์ข…๋ฃŒ ์กฐ๊ฑด , ์ ํ™”์‹ ๊ตฌํ˜„ - List wrods = new ArrayList<>(); - words.add(word); - if(word.length() == 5) return words; - - //์ ํ™”์‹ :์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ words ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. - private static fianl char[] CHARS = "AEIOU".toCharArray(); - - - } -``` - -3. ์ฝ”๋“œ - -```java -import java.util.ArrayList; -import java.util.List; - -class Solution { - - private static final char[] CHARS = "AEIOU".toCharArray(); - - private List generate(String word){ - - List words = new ArrayList<>(); - words.add(word); - if(word.length() == 5) return words; - - for(char c : CHARS){ - words.addAll(generate(word + c)); - } - return words; -} - - - - - public int solution(String word) { - - return generate("").indexOf(word); - } -} -``` - -4. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด - -```java -import java.util.*; -class Solution { - List list = new ArrayList<>(); - void dfs(String str, int len) { - if(len > 5) return; - list.add(str); - for(int i = 0; i < 5; i++) dfs(str + "AEIOU".charAt(i), len + 1); - } - public int solution(String word) { - dfs("", 0); - return list.indexOf(word); - } -} -``` - -```java -class Solution { - public int solution(String word) { - int answer = 0, per = 3905; - for(String s : word.split("")) answer += "AEIOU".indexOf(s) * (per /= 5) + 1; - return answer; - } -} -``` diff --git a/developLog/algorithm-datastructure/data-structure/undefined-3.md b/developLog/algorithm-datastructure/data-structure/undefined-3.md deleted file mode 100644 index c1c1461..0000000 --- a/developLog/algorithm-datastructure/data-structure/undefined-3.md +++ /dev/null @@ -1,518 +0,0 @@ -# ํŠธ๋ฆฌ - -* ์‚ฌ์ง„ ์ถœ์ฒ˜ : [https://laurent.tistory.com/entry/์ž๋ฃŒ๊ตฌ์กฐ-ํŠธ๋ฆฌ-Tree](https://laurent.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%8A%B8%EB%A6%AC-Tree) -* [https://velog.io/@juwon9733/์ฝ”๋”ฉ-ํ…Œ์ŠคํŠธ๋ฅผ-์œ„ํ•œ-ํŠธ๋ฆฌTree-์ž๋ฃŒ๊ตฌ์กฐ-10๋ถ„-ํ•ต์‹ฌ-์š”์•ฝ](https://velog.io/@juwon9733/%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%ACTree-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-10%EB%B6%84-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%95%BD) -* ๊ฐ•์˜ ์ถœ์ฒ˜ : [๋™๋นˆ๋‚˜](https://www.youtube.com/watch?v=i5yHkP1jQmo\&t=3s) -* ๊ฐ•์˜ ์ถœ์ฒ˜ : [์‰ฌ์šด ์ฝ”๋“œ](https://www.youtube.com/watch?v=ohrwGtqeW-I\&list=PLcXyemr8ZeoT-\_8yBc\_p\_lVwRRqUaN8ET\&index=29) - -![](https://velog.velcdn.com/images/prettylee620/post/45561eed-be30-4c6a-8ab4-dd2ec6cb56b7/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/f8b3e83b-bd36-4aef-9009-0e61d771d644/image.png) - -## 1. ํŠธ๋ฆฌ - -> ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์ง€๋งŒ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋ฌธ์„œ๋ฅผ ์ดํ•ดํ•  ๋•Œ ์ข‹๋‹ค - -### ๐Ÿ‡ ํŠธ๋ฆฌ๋ž€? - -* ๊ทธ๋ž˜ํ”„ ์ค‘ ํ•˜๋‚˜๋กœ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ง•์ฒ˜๋Ÿผ ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ฐฐ์—ด๋œ ์ผ์ข…์˜ `๊ณ„์ธต์  ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ` -* ํŠธ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ์„ ์ˆฒ์ด๋ผ๊ณ  ํ•จ -* ๋ฟŒ๋ฆฌ๊ฐ€ ์ตœ์ƒ์œ„๋กœ ์˜ฌ๋ผ๊ฐ -* ๊ฐ€๊ณ„๋„์™€ ๊ฐ™์Œ โ‡’ ๋‹จ๊ตฐ ํ• ์•„๋ฒ„์ง€๊ฐ€ A๊ฐ™์€ ๋Š๋‚Œ - -### ๐Ÿ‡ ํŠธ๋ฆฌ์˜ ํŠน์ง• - -1. ๋ถ€๋ชจ, ์ž์‹ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. -2. ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๋Š” **๋น„์„ ํ˜• ๊ตฌ์กฐ** -3. ํŠธ๋ฆฌ์— ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์žˆ๋Š” **์žฌ๊ท€์  ๊ตฌ์กฐ** -4. V-1 = E๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. ๊ฐ„์„  ์ˆ˜= ๋…ธ๋“œ์ˆ˜ -1 -5. ์ž„์˜์˜ ๋‘ ๋…ธ๋“œ ์‚ฌ์ด ๊ฒฝ๋กœ๋Š” ์œ ์ผ๋ฌด์ดํ•˜๊ฒŒ ์กด์žฌํ•œ๋‹ค. -6. `๋ฃจํŠธ ๋…ธ๋“œ`๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค. -7. ์‚ฌ์ดํด(cycle)์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ - -![](https://velog.velcdn.com/images/prettylee620/post/136c709a-6b6c-4d5d-8912-81a7299f90ec/image.png) 8. ์ž๋…€ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋งŒ ์กด์žฌ - -![](https://velog.velcdn.com/images/prettylee620/post/ebb5a99f-0c89-4db9-96e7-a00fcbbefcb9/image.png) - -### ๐Ÿ‡ ํŠธ๋ฆฌ์˜ ์šฉ์–ด - -![](https://velog.velcdn.com/images/prettylee620/post/9f97ebc1-ec9f-44c4-be30-535be0b02e84/image.png) - -1. **๋ฃจํŠธ ๋…ธ๋“œ(Root Node)** - 1. ํŠธ๋ฆฌ์—์„œ ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ, ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์  - 2. 2 -2. **๋‹จ๋ง ๋…ธ๋“œ(Termial Node) = ์™ธ๋ถ€ ๋…ธ๋“œ(external) ๋…ธ๋“œ** - 1. ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ, ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ๋ง๋‹จ์— ์œ„์น˜, degree๊ฐ€ 0 - 2. 3, 7, 8, 1, 4 - 3. leaf node, outer node, terminal node -3. **๋ ˆ๋ฒจ(Level)** - 1. ๋…ธ๋“œ์™€ ๋ฃจํŠธ ๋…ธ๋“œ ๊ฒฝ๋กœ์—์„œ ๊ฐ„์„ ์˜ ์ˆ˜ - 2. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ์€ 0 (or 1) -4. **์กฐ์ƒ ๋…ธ๋“œ(Ancestor Node)** : ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋ผ ๋ฃจํŠธ ๋…ธํŠธ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ๋งŒ๋‚˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ - 1. 8์˜ ์กฐ์ƒ ๋…ธ๋“œ : 11, 9, 2 -5. **์ž์† ๋…ธ๋“œ(descendant Node)** : ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋ผ ๋‚ด๋ ค๊ฐ€๋ฉฐ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ - 1. 9์˜ ์ž์† ๋…ธ๋“œ : 11, 8, 1, 4 -6. **์ž์‹ ๋…ธ๋“œ(Child Node)** : ํŠน์ • ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋‹ค์Œ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ - 1. 5๋ฒˆ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋Š” 6, 7 - 2. 6๋ฒˆ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋Š” 3 -7. **๋ถ€๋ชจ ๋…ธ๋“œ(Parent Node)** : ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ - 1. 2, 5, 9, 6, 11 -8. **ํ˜•์ œ ๋…ธ๋“œ(Sibling)** : ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ - 1. {8, 1, 4}, {6, 7}, {5, 9} -9. **๋‚ด๋ถ€ ๋…ธ๋“œ(internal) =branch node = inner node** : ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ - 1. 2, 5, 9, 6, 11 -10. `๋…ธ๋“œ`์˜ ๊นŠ์ด(Depth) - 1. **๋ฃจํŠธ ๋…ธ๋“œ**์—์„œ ํ•ด๋‹น ๋…ธ๋“œ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„์„ ์˜ ์ˆ˜ - 2. 11์˜ ๊นŠ์ด : 2 - 3. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊นŠ์ด : 0 -11. `ํŠธ๋ฆฌ`์˜ ๊นŠ์ด(depth) - 1. ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ๊นŠ์ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊นŠ์ด - 2. ํŠธ๋ฆฌ ๊นŠ์ด : 3 - 3. ํŠธ๋ฆฌ ๋†’์ด = ํŠธ๋ฆฌ ๊นŠ์ด -12. **๊ฒฝ๋กœ(path)** - 1. ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๋…ธ๋“œ๋“ค์˜ ์‹œํ€ธ์Šค(sequence) - 2. 2์—์„œ 7๋กœ์˜ ๊ฒฝ๋กœ : 2- 5 -7 - 3. **๊ฒฝ๋กœ ๊ธธ์ด(length of path)** - 4. ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ์ˆ˜ - 5. 2์—์„œ 7๋กœ์˜ ๊ฒฝ๋กœ ๊ธธ์ด : 3 - 6. 2์—์„œ 3์œผ๋กœ์˜ ๊ฒฝ๋กœ ๊ธธ์ด : 4 -13. **`๋…ธ๋“œ`์˜ ๋†’์ด(height) : ๋ฌธ์„œ๋งˆ๋‹ค ๋†’์ด๋ฅผ ๊ฐ„์„ ์œผ๋กœ ๋”ฐ์ง€๊ธฐ๋„ ํ•˜๊ณ  ๋…ธ๋“œ ์ˆ˜๋กœ ๋”ฐ์ง€๊ธฐ๋„** - 1. ๋…ธ๋“œ์—์„œ ๋ฆฌํ”„(leaf) ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ์˜ ๊ฐ„์„ (edge) ์ˆ˜ - 2. 5์˜ ๋†’์ด : 2 - 3. ๋ฆฌํ”„(left) ๋…ธ๋“œ์˜ ๋†’์ด : 0 -14. `ํŠธ๋ฆฌ`์˜ ๋†’์ด - 1. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋†’์ด - 2. ํŠธ๋ฆฌ ๋†’์ด : 3 -15. **์ฐจ์ˆ˜(Degree)** - 1. ํŠน์ • ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜ - 2. ์ฐจ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋ผ๋Š”๋ฐ **ํŠน์ • ๋…ธ๋“œ ์–ธ๊ธ‰ x => ๊ฐ€์žฅ ํฐ ์ฐจ์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ’**์„ ๊ณ ๋ฅด๋ฉด ๋จ = ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜(degree) - 3. 11์˜ ์ฐจ์ˆ˜ : 3 - 4. 3์˜ ์ฐจ์ˆ˜ : 0 -16. **`๋…ธ๋“œ`์˜ ํฌ๊ธฐ(size)** - 1. ์ž์‹ ์„ ํฌํ•จํ•œ ์ž์† ๋…ธ๋“œ์˜ ์ˆ˜ - 2. 9์˜ ํฌ๊ธฐ : 5 - 3. 5์˜ ํฌ๊ธฐ : 4 -17. `ํŠธ๋ฆฌ`์˜ ํฌ๊ธฐ(size) - 1. ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ˆ˜ - 2. ํŠธ๋ฆฌ์˜ ํฌ๊ธฐ : 10 -18. **๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ(distance)** - 1. ๋‘ ๋…ธ๋“œ์˜ **์ตœ๋‹จ ๊ฒฝ๋กœ**์˜ ๊ฐ„์„  ์ˆ˜ - 2. distance(9, 8) : 2 - 3. distance(3, 8) : 6 -19. width ![](https://velog.velcdn.com/images/prettylee620/post/5a93d73a-d1d8-4e39-a1d7-bb81a39897c9/image.png) - -* ์ž„์˜์˜ ๋ ˆ๋ฒจ์—์„œ ๋…ธ๋“œ์˜ ์ˆ˜ -* level 2์˜ width : 3 - -20. ์„œ๋ธŒ ํŠธ๋ฆฌ(subtree) : ๊ฐ ๋…ธ๋“œ์˜ ์ž๋…€ ๋…ธ๋“œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ์„œ๋ธŒ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/85a852de-de64-4032-9426-19ce12c6fac9/image.png) - -### ๐Ÿ‡ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ\[chat gpt] - -> ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์งํ™”ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ - -![](https://velog.velcdn.com/images/prettylee620/post/1210dde4-6696-4e55-8252-4053c709832d/image.png) - -## 2. ์ด์ง„ ํŠธ๋ฆฌ - -### ๐Ÿ‡ ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree) - -* ๊ฐ ๋…ธ๋“œ์˜ ์ž๋…€ ๋…ธ๋“œ ์ˆ˜ ์ตœ๋Œ€ 2๊ฐœ์ธ Tree๋ฅผ ์˜๋ฏธ -* left child | right child = ์™ผ์ชฝ ์ž๋…€ ๋…ธ๋“œ | ์˜ค๋ฅธ์ชฝ ์ž๋…€ ๋…ธ๋“œ - -### ๐Ÿ‡ ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree) ์ข…๋ฅ˜ - -![](https://velog.velcdn.com/images/prettylee620/post/699d8990-2b5c-4a07-8177-d30568ec955c/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/330a7383-88a7-4a0e-a331-4902e5f3b9ae/image.png) - -1. **full binary tree(์ • ์ด์ง„ ํŠธ๋ฆฌ)** : ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ž๋…€ ๋…ธ๋“œ๊ฐ€ `์—†๊ฑฐ๋‚˜ ๋‘ ๊ฐœ`์ธ ํŠธ๋ฆฌ = ์ž๋…€ ๋…ธ๋“œ๊ฐ€ 1๊ฐœ์ธ ๋…ธ๋“œ๋Š” ์—†๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/24d2cc5a-7e94-444e-8d6a-3f8df64c8cb5/image.png) - -2. **complete binary tree(์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ)** : ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ **๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ๋…ธ๋“œ๊ฐ€ ๋น ์ง์—†์ด ์ฑ„์›Œ์ ธ ์žˆ๊ณ ** ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์€ **์™ผ์ชฝ๋ถ€ํ„ฐ ๋น ์ง์—†์ด ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ๋Š”** ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/2065e97f-fea8-4e24-a2fa-be87c323e810/image.png) - -3. **perfect binary tree(ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ)** : ๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ๋…ธ๋“œ๊ฐ€ ๋น ์ง์—†์ด ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/f2c1bfa3-9616-47ac-9f3e-0e3d35f332aa/image.png) - -4. **degenerate binary tree(๋ณ€์งˆ ์ด์ง„ ํŠธ๋ฆฌ)** : ๋ชจ๋“  ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ์ž๋…€ ๋…ธ๋“œ๋งŒ์„ ๊ฐ€์ง - -* pathological binary tree๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ -* left skewed binary tree : ๋ชจ๋“  ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” `์™ผ์ชฝ` ์ž๋…€ ๋…ธ๋“œ๋งŒ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/5ff4e697-b5c4-4aeb-b33e-e6d45cdd36a0/image.png) - -* right skewed binary tree : ๋ชจ๋“  ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์˜ค๋ฅธ`์ชฝ` ์ž๋…€ ๋…ธ๋“œ๋งŒ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/960f9d4a-b8c4-4b53-992e-a6ebed36f538/image.png) - -5. balanced binary tree(๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ) : ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ ์ตœ๋Œ€ 1์ธ ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/6da19ea3-78cb-4370-b0ba-612acf4c9bd3/image.png) - -6. **ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ** : ๋ชจ๋“  ์žŽ์˜ ๋ ˆ๋ฒจ์ด ๋™์ผํ•œ ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฉฐ, ์žŽ์ด ์•„๋‹Œ ๋‚ด๋ถ€ ๋…ธ๋“œ๋“ค์€ ๋ชจ๋‘ 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ - * `๋‚ด๋ถ€ ๋…ธ๋“œ` : ๋ฃจํŠธ ๋…ธ๋“œ์™€ ๋ฆฌํ”„ ๋…ธ๋“œ(leaf node)๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋ฅผ ์˜๋ฏธ - * ์žŽ : ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ - -### ๐Ÿ‡ ์ด์ง„ ํŠธ๋ฆฌ ์žฅ์  - -1. ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ์œ ์—ฐํ•˜๋‹ค -2. ๊ฐ’์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ขŒ์šฐ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ๋‚˜๋ˆ ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…/์‚ญ์ œ/๊ฒ€์ƒ‰์ด ๋ณดํ†ต์€ ๋น ๋ฅด๋‹ค -3. ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ์ˆœํšŒ๊ฐ€๋Šฅ - -### ๐Ÿ‡ ์ด์ง„ ํŠธ๋ฆฌ ๋‹จ์  - -* ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธ ํ•ด์ค˜์•ผ ํ•จ -* ํŠธ๋ฆฌ๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ํ•œ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋˜๋ฉด ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ ๋™์ž‘๋“ค์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์•…ํ™” -* ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ**๊ฐ€ ์‚ฌ์šฉ - * AVL ํŠธ๋ฆฌ. Red-Black ํŠธ๋ฆฌ - -### ๐Ÿ‡ ๊ด€๋ จ ์ฝ”ํ…Œ ๋ฌธ์ œ - -#### ์˜ˆ์ œ : ๊ธธ์ฐพ๊ธฐ ๋ฌธ์ œ - -1. ๋ฌธ์ œ ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/42892 -2. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด : https://choichumji.tistory.com/167 -3. ๊ฐ•์‚ฌ๋‹˜์˜ ์ฝ”๋“œ์™€ ์„ค๋ช… ๋ง๋ถ™ํž˜ - 1. **`preorder.stream().mapToInt(Integer::intValue).toArray()`** - 2. **`preorder`** ๋ฆฌ์ŠคํŠธ๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ฐ ์š”์†Œ๋ฅผ **`mapToInt()`** ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด **`int`** ํ˜•์œผ๋กœ ๋ณ€ํ™˜ - 3. \*\*mapToInt(Integer::intValue)\*\*๋Š” ๊ฐ ์š”์†Œ๋ฅผ **int**๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ฐธ - 4. \*\*`Integer::intValue`\*\*๋Š” **Integer** ํด๋ž˜์Šค์˜ **intValue** ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ **int**๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ - 5. **`toArray()`** ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ - -```java -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class Solution { - //์ด์ง„ ํŠธ๋ฆฌ ๋…ธ๋“œ(value : ๋…ธ๋“œ ์ˆซ์ž x,y : ๋…ธ๋“œ ์œ„์น˜ - ์ขŒํ‘œ ) - // left, right : ๊ฐ๊ฐ ์™ผ์ชฝ ์ž์‹์ธ์ง€ ์˜ค๋ฅธ์ชฝ ์ž์‹์ธ์ง€ ๊ตฌ๋ถ„ - private static class Node{ - public final int value; - public final int x; - public final int y; - - public Node left; - public Node right; - - private Node(int value, int x, int y){ - this.value = value; - this.x = x; - this.y = y; - } - } - - // ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฉ”์„œ๋“œ, ์ฃผ์–ด์ง„ ๋…ธ๋“œ๋ฅผ ํ˜„์žฌ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์— ์‚ฝ์ž… - // ์œ„์น˜ ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ์ ์ ˆํ•œ ์œ„์น˜์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž… - private void insert(Node root, Node node){ - if(node.x < root.x) { - if (root.left == null) { - root.left = node; - } else { - insert(root.left, node); - } - } - else{ - if(root.right == null){ - root.right = node; - } - else{ - insert(root, node); - } - } - } - - //๋…ธ๋“œ ๋ฐฐ์—ด์„ ๋ฐ›์•„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ - // ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ ์ง€์ •ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋“ค์„ insert ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜์—ฌ ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ - private Node constructTree(Node[] nodes){ - Node root = nodes[0]; - for(int i = 1; i visits){ - if(node == null) return; - visits.add(node.value); // ํ˜„์žฌ ๋…ธ๋“œ ๊ฐ’์„ ๋ฐฉ๋ฌธ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ - pre(node.left, visits); // ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ „์œ„ ์ˆœํšŒ - pre(node.right, visits); // ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ „์œ„ ์ˆœํšŒ - } - - // ํ›„์œ„ ์ˆœํšŒ - // ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์ˆœํšŒํ•œ ํ›„, ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ - private void post(Node node, List visits){ - if(node == null) return; - // ๋๋ถ€ํ„ฐ ํ›„ - post(node.left, visits); - post(node.right, visits); - // ๋งˆ์ง€๋ง‰์— ๋„ฃ์–ด์คŒ - visits.add(node.value); - } - - public int[][] solution(int[][] nodeinfo) - { - Node[] nodes = new Node[nodeinfo.length]; - for (int i = 0; i < nodes.length; i++) - { - // ๊ฐ ์ธ๋ฑ์Šค์— ๋…ธ๋“œ ์ •๋ณด ์ €์žฅ, i + 1์€ ๋…ธ๋“œ์˜ ๊ฐ’์„ ์˜๋ฏธํ•˜๋ฉฐ, nodeinfo[i][0]์€ x ์ขŒํ‘œ, nodeinfo[i][1]์€ y ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค - nodes[i] = new Node(i + 1, nodeinfo[i][0], nodeinfo[i][1]); - } - - Arrays.sort(nodes, (a, b) -> b.y - a.y); // ์œ—๋ถ€๋ถ„๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ y์ขŒํ‘œ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - // ๋…ธ๋“œ ์ •๋ณด๋“ค์ด ์ •๋ ฌ๋˜์—ˆ์œผ๋ฏ€๋กœ, ๋ฐฐ์—ด์˜ ์ฒซ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. - - Node root = constructTree(nodes); // ์ด์ง„ ํŠธ๋ฆฌ ์ƒ์„ฑ - - List preorder = new ArrayList<>(); - pre(root,preorder); - - List postorder = new ArrayList<>(); - post(root,preorder); - - // preorder์™€ postorder ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ๊ฐ๊ฐ int ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ - return new int[][] { - preorder.stream().mapToInt(Integer::intValue).toArray(), - postorder.stream().mapToInt(Integer::intValue).toArray(), - }; - - } -} -``` - -## 3. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ - -### ๐Ÿ‡ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) - -![](https://velog.velcdn.com/images/prettylee620/post/901016e1-9d1c-4488-9443-8335ce6e3762/image.png) - -* ์ด์ง„ `ํƒ์ƒ‰`์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์•ˆ๋œ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข… -* ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํŠน์ง• : ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ < ๋ถ€๋ชจ ๋…ธ๋“œ < ์˜ค์ชฝ ์ž์‹ ๋…ธ๋“œ - * ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์™ผ์ชฝ ๋…ธ๋“œ๊ฐ€ ์ž‘๋‹ค. - * ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๊ฐ€ ํฌ๋‹ค - * ์ฆ‰, ๋ชจ๋“  ๋…ธ๋“œ์˜ **์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ**๋Š” ํ•ด๋‹น ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค **์ž‘์€ ๊ฐ’๋“ค๋งŒ** ๊ฐ€์ง€๊ณ  ๋ชจ๋“  ๋…ธ๋“œ์˜ **์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ**๋Š” ํ•ด๋‹น ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค **ํฐ ๊ฐ’๋“ค๋งŒ** ๊ฐ€์ง„๋‹ค. -* ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ ์ ˆ๋ฐ˜ ๊ฐ€๊นŒ์ด ์ค„์–ด๋“ ๋‹ค. -* ํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์œผ๋ฉด ๊ฒ€์ƒ‰ ํšจ์œจ์ด ์ข‹์ง€ ์•Š๋‹ค. - -#### ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’ - -* ์ตœ์†Ÿ๊ฐ’ : ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์กด์žฌ -* ์ตœ๋Œ“๊ฐ’ : ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์กด์žฌ - -### ๐Ÿ‡ ํŠธ๋ฆฌ ์ˆœํšŒ(Tree Traversal) - -* ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์— ํฌํ•จ๋œ ๋…ธ๋“œ๋ฅผ ํŠน์ •ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•œ ๋ฒˆ ์”ฉ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธ - * ํŠธ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ - -#### ๋Œ€ํ‘œ์ ์ธ ํŠธ๋ฆฌ ์ˆœํšŒ - -1. **์ „์œ„ ์ˆœํšŒ(Pre-Order Traversal)** - -![](https://velog.velcdn.com/images/prettylee620/post/fd25a405-82dd-4307-90f6-f249d1a7629a/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/52075908-495f-41f9-9d08-ec7abf0a2e63/image.png) - -* Root โ‡’ Left โ‡’ Right ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธ -* ๋ฃจํŠธ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธ - -```java -// ์ „์œ„ ์ˆœํšŒ - private void pre(Node node, List visits){ - if(node == null) return; - visits.add(node.value); - pre(node.left, visits); - pre(node.right, visits); - } -``` - -2. **์ค‘์œ„ ์ˆœํšŒ(In-Order traversal)** - -![](https://velog.velcdn.com/images/prettylee620/post/e94899a8-6f69-466c-987b-0a234c8d7955/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/e34cd51a-f5bf-429f-b20b-b45f363ca96f/image.png) - -โ‡’ ์ž‘์€๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธ - -> ์žฌ๊ท€์ ์œผ๋กœ ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ ์ˆœํšŒ โ‡’ ํ˜„์žฌ ๋…ธ๋“œ ๋ฐฉ๋ฌธ(๊ฐ’ ์ถœ๋ ฅ) โ‡’ ์žฌ๊ท€์ ์œผ๋กœ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ ์ˆœํšŒ - -![](https://velog.velcdn.com/images/prettylee620/post/66eb3f4d-0a62-43f4-9132-3f15e2d6298a/image.png) - -* left โ‡’ Root โ‡’ Right ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธ -* ์žฌ๊ท€์ ์œผ๋กœ ์™ผ์ชฝ ์ž์‹์„ ๋จผ์ € ๋ฐฉ๋ฌธ ํ›„ ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธ - -3. **ํ›„์œ„ ์ˆœํšŒ(Post-Order)** - -![](https://velog.velcdn.com/images/prettylee620/post/f87996f2-962f-4af1-9a09-36578cfc210f/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/dbad292e-7c7d-4e45-9de4-436d541381c9/image.png) - -* left โ‡’ right โ‡’ root ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธ -* ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ๋ฐฉ๋ฌธ ํ›„ ๋ฃจํŠธ ๋ฐฉ๋ฌธ - -```java -// ํ›„์œ„ ์ˆœํšŒ - private void post(Node node, List visits){ - if(node == null) return; - // ๋๋ถ€ํ„ฐ ํ›„ - post(node.left, visits); - post(node.right, visits); - // ๋งˆ์ง€๋ง‰์— ๋„ฃ์–ด์คŒ - visits.add(node.value); - } -``` - -#### ๋น„๊ต - -![](https://velog.velcdn.com/images/prettylee620/post/03320c5a-97bf-4db8-ab17-f0dc9d3050a3/image.png) - -### ๐Ÿ‡ ๋…ธ๋“œ์˜ successor(ํ›„์ž„์ž) - -![](https://velog.velcdn.com/images/prettylee620/post/bb9d07a1-fdb7-47db-af0a-f3ecbb5b41e8/image.png) - -* ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ๊ฐ’์ด **ํฐ ๋…ธ๋“œ๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ’์ด ์ž‘์€ ๋…ธ๋“œ** -* 20์˜ successor : 30 -* 17์˜ sucessor : 20 -* 10์˜ sucessor : 15 - -### ๐Ÿ‡ ๋…ธ๋“œ์˜ predecessor(์„ ์ž„์ž) - -* ํ•ด๋‹น ๋…ธ๋“œ๋ณด๋‹ค ๊ฐ’์ด **์ž‘์€ ๋…ธ๋“œ๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ’์ด ํฐ ๋…ธ๋“œ** -* 20์˜ predecessor : 17 -* 10์˜ predecessor : 5 -* 40์˜ predecessor : 30 - -### ๐Ÿ‡ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ณผ์ • - -1. ๋ฃจํŠธ ๋…ธ๋“œ : 50 -2. ๋งŒ์•ฝ 70์„ ๋„ฃ๋Š”๋‹ค๊ณ  ํ•˜๋ฉด ๋ฃจํŠธ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ์— ์ง‘์–ด ๋„ฃ์Œ - -![](https://velog.velcdn.com/images/prettylee620/post/a2495e35-5c0b-4d6b-8137-2a54fb9d9a10/image.png) - -3. ๋งŒ์•ฝ 90์„ ๋„ฃ์œผ๋ฉด 70๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ์— ์ง‘์–ด๋„ฃ์Œ - -![](https://velog.velcdn.com/images/prettylee620/post/343ae6ea-d73e-40e8-8eab-4c731066d067/image.png) - -4. 99์„ ๋„ฃ์œผ๋ฉด 50์ด๋ž‘ ๋น„๊ต ํ›„ ํฌ๋‹ˆ๊นŒ ์˜ค๋ฅธ์ชฝ โ‡’ 70์ด๋ž‘ ๋น„๊ต ํ›„ ํฌ๋‹ˆ๊นŒ ์˜ค๋ฅธ์ชฝ โ‡’ 90์ด๋ž‘ ๋น„๊ต ํ›„ ํฌ๋‹ˆ๊นŒ ์˜ค๋ฅธ์ชฝ์— ๋„ฃ์Œ 99 - -![](https://velog.velcdn.com/images/prettylee620/post/cbdf6bf4-9696-4fe8-944f-20939644961b/image.png) - -5. 80์„ ์‚ฝ์ž…ํ•˜๋ฉด 1) 50๋ณด๋‹ค ํฌ๋‹ˆ๊นŒ ์˜ค๋ฅธ์ชฝ 2) 70๋ณด๋‹ค ํฌ๋‹ˆ๊นŒ ์˜ค๋ฅธ์ชฝ 3) 90๋ณด๋‹ค ์ž‘์œผ๋‹ˆ๊นŒ ์™ผ์ชฝ์— ์ตœ์ข… ์‚ฝ์ž… - -![](https://velog.velcdn.com/images/prettylee620/post/87f8d08f-b77c-4b03-bfdf-b3031c4c98a5/image.png) - -6. ์ด๋Ÿฐ ๊ณผ์ •์„ ๋ฐ˜๋ณต โ‡’ ์ตœ์ข… ์ด์ง„ ํŠธ๋ฆฌ - -![](https://velog.velcdn.com/images/prettylee620/post/424db681-f5b1-40e6-9cdc-491adc814748/image.png) - -### ๐Ÿ‡ ์ด์ง„ํŠธ๋ฆฌ ์‚ญ์ œ(delete) - -#### ๊ณผ์ • - -1. ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ `๊ฒ€์ƒ‰` -2. ์žˆ์œผ๋ฉด ์‚ญ์ œ -3. 20์„ ์‚ญ์ œํ•˜๋ ค๋ฉด 1) 50๋ณด๋‹ค ์ž‘์œผ๋‹ˆ ์™ผ์ชฝ โ‡’ 2) 30๋ณด๋‹ค ์ž‘์œผ๋‹ˆ ์™ผ์ชฝ โ‡’ 20 ๋ฐœ๊ฒฌ โ‡’ ์‚ญ์ œ ํ›„ ๊ฐ’์ด null์ด ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/223684da-c16a-4b49-a854-356c51323709/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/13d78203-5211-4eaa-b06c-cb5aa044eba3/image.png) - -4. 30์„ ์ง€์šฐ๋ คํ•จ โ‡’ **๊ทผ๋ฐ ์ž๋…€์ธ 40์ด ์žˆ์Œ** - 1. ์ฆ‰, 30์˜ ๋ถ€๋ชจ์ธ 50์ด 40์„ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋ฐ”๊ฟˆ - -![](https://velog.velcdn.com/images/prettylee620/post/971f4b76-1606-4ab7-bdd8-3784b3697b59/image.png) - -5. 50์„ ์ง€์šฐ๋ ค๊ณ  ํ•จ โ‡’ ๊ทผ๋ฐ ์ž๋…€๊ฐ€ ๋‘˜ - 1. ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ์˜ค๋ฅธ์ชฝ์€ **๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์œ„**๋กœ ์˜ฌ๋ฆผ - 2. ์™ผ์ชฝ์˜ ๊ฒฝ์šฐ์—๋Š” **๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์œ„๋กœ** ์˜ฌ๋ฆผ - -![](https://velog.velcdn.com/images/prettylee620/post/b0ae2ee3-b704-4386-bba8-1ae9e08a23a2/image.png) - -#### ์ž๋…€๊ฐ€ `์—†๋Š”` ๋…ธ๋“œ ์‚ญ์ œ(delete) - -* ์‚ญ์ œ๋  ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด ์—†๋„๋ก ์ฒ˜๋ฆฌ โ‡’ `null` - -#### ์ž๋…€๊ฐ€ `ํ•˜๋‚˜`์ธ ๋…ธ๋“œ ์‚ญ์ œ(delete) - -* ์‚ญ์ œ๋  ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์‚ญ์ œ๋  ๋…ธ๋“œ์˜ ์ž๋…€๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋ณ€๊ฒฝ - -#### ์ž๋…€๊ฐ€ `๋‘˜`์ธ ๋…ธ๋“œ ์‚ญ์ œ(delete) - -* ์‚ญ์ œ๋  ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ์ œ์ผ **๊ฐ’์ด ์ž‘์€** ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋…ธ๋“œ ๋Œ€์ฒด - -### ๐Ÿ‡ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ - -1. ํ˜„์žฌ ํŠธ๋ฆฌ์˜ ์ƒํƒœ - -![](https://velog.velcdn.com/images/prettylee620/post/3b97ca31-23bf-4d04-87d1-0ced6a1dc861/image.png) - -2. ์‚ฝ์ž…์ด๋ž‘ ๋น„์Šทํ•จ ๋น„๊ตํ•ด์„œ ๋„ฃ๊ธฐ - -![](https://velog.velcdn.com/images/prettylee620/post/a868dc23-f3c5-4a4e-b7ac-2cc5bb070aff/image.png) - -3. ์—ฌ๊ธฐ์„œ ๋˜ ๋ฃจํŠธ ๋…ธ๋“œ ์‚ญ์ œ๋˜๋ฉด - 1. ์˜ค๋ฅธ์ชฝ์—์„œ 1) ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ธ 80์ด ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ  2) 80์˜ ์ž๋…€์ธ 85๋Š” 80์˜ ๋ถ€๋ชจ์˜€๋˜ 90์ด ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/f9d60959-7eef-4584-9847-28989f03ecdb/image.png) - -### ๐Ÿ‡ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ณผ์ • - -> ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •, ์ฐพ๊ณ ์ž ํ•˜๋Š” ์›์†Œ : 37 - -![](https://velog.velcdn.com/images/prettylee620/post/7d818bf4-de18-4aa5-848c-1ea6a57b3fa9/image.png) - -1. ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ๋ฐฉ๋ฌธํ•˜์—ฌ ํƒ์ƒ‰์„ ์ง„ํ–‰ - 1. ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ฐพ๋Š” ์›์†Œ 37์„ ๋น„๊ต - 2. ์ฐพ๋Š” ์›์†Œ๊ฐ€ ๋” ํฌ๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ๋ฐฉ๋ฌธ - -![](https://velog.velcdn.com/images/prettylee620/post/2b103a4c-0ae4-49c9-8fe5-42e90b22a0c4/image.png) - -2. ํ˜„์žฌ ๋…ธ๋“œ์™€ ๊ฐ’์„ ๋น„๊ต - 1. ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ฐพ๋Š” ์›์†Œ 37์„ ๋น„๊ต - 2. ์ฐพ๋Š” ์›์†Œ๊ฐ€ ๋” ์ž‘์œผ๋ฏ€๋กœ ์™ผ์ชฝ ๋ฐฉ๋ฌธ - -![](https://velog.velcdn.com/images/prettylee620/post/8ce7b1e3-4060-4614-b1a4-bdb1f7641055/image.png) - -3. ํ˜„์žฌ ๋…ธ๋“œ์™€ ๊ฐ’์„ ๋น„๊ต - 1. ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ฐพ๋Š” ์›์†Œ 37์„ ๋น„๊ต - 2. ์›์†Œ๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ํƒ์ƒ‰์„ ์ข…๋ฃŒ - -## 4. AVL ํŠธ๋ฆฌ - -> ์ถœ์ฒ˜ : http://yahma.tistory.com/85 - -![](https://velog.velcdn.com/images/prettylee620/post/16a36b32-e08b-47b3-9c79-bc0bf7f0f176/image.png) - -### ๐Ÿ‡ ์ •์˜ - -* ์ตœ์•…์˜ ๊ฒฝ์šฐ ์„ ํ˜•์ ์ธ ํŠธ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ **๋ฐฉ์ง€ํ•˜๊ณ  ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š”** ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ -* ๋‘ ์ž์‹ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ํ•ญ์ƒ ์ตœ๋Œ€ 1๋งŒํผ ์ฐจ์ด ๋‚œ๋‹ค๋Š” ํŠน์ง• -* ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ๋ชจ๋‘ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(logn) - -### ๐Ÿ‡ ๊ท ํ˜• ์ธ์ˆ˜ - -![](https://velog.velcdn.com/images/prettylee620/post/06331d69-34ea-452b-8dc2-6a94c2e07d2f/image.png) - -1. ๊ท ํ˜• ์ธ์ˆ˜ : ๊ท ํ˜•์˜ ์ •๋„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋‹จ์œ„ -2. ๊ท ํ˜• ์ธ์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์ด ํฌ๋ฉด ํด์ˆ˜๋ก ๊ทธ๋งŒํผ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ๋ฌด๋„ˆ์ง„ ์ƒํƒœ -3. ๊ท ํ˜• ์ธ์ˆ˜ ๊ฐ’ = ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด - ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๋†’์ด -4. AVL ํŠธ๋ฆฌ๋Š” ๋‘ ์ž์‹์˜ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ํ•ญ์ƒ ์ตœ๋Œ€ 1๋งŒํผ ์ฐจ์ด ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ“๊ฐ’์ด 2์ด์ƒ์ธ ๊ฒฝ์šฐ ์œ„์น˜ ์žฌ์กฐ์ • ์ง„ํ–‰ - -### ๐Ÿ‡ ๊ท ํ˜•์žก๋Š” ๊ณผ์ • - -![](https://velog.velcdn.com/images/prettylee620/post/7727f866-287d-49fa-bb36-bdca3c7896d0/image.png) - -1. LL ์ƒํƒœ : ๊ท ํ˜•์ธ์ˆ˜ + 2๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํƒœ -2. LL ํšŒ์ „ : LL์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ํ˜• ์žก๊ธฐ ์œ„ํ•ด ํšŒ์ „ํ•˜๋Š” ๋ฐฉ๋ฒ• -3. RR ์ƒํƒœ : ๊ท ํ˜• ์ธ์ˆ˜ -2๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํƒœ -4. RR ํšŒ์ „ : RR ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ํ˜•์žก๊ธฐ ์œ„ํ•ด ํšŒ์ „ํ•˜๋Š” ๋ฐฉ๋ฒ• - -## ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ - -* ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธํŠธ์™€ ๋ฃจํŠธ ๋…ธํŠธ๋Š” ๋ธ”๋ž™์ด๊ณ  ์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ๋ ˆ๋“œ์ด๋ฉด ๊ทธ ๋…ธ๋“œ์˜ ์ž์‹์€ ๋ฐ˜๋“œ์‹œ ๋ธ”๋ž™์ด๋‹ค. diff --git a/developLog/algorithm-datastructure/data-structure/undefined-4.md b/developLog/algorithm-datastructure/data-structure/undefined-4.md deleted file mode 100644 index 4e1af82..0000000 --- a/developLog/algorithm-datastructure/data-structure/undefined-4.md +++ /dev/null @@ -1,149 +0,0 @@ -# ์šฐ์„ ์ˆœ์œ„ ํ์™€ ํž™์˜ ์ฐจ์ด - -> ์‰ฌ์šด์ฝ”๋“œ๋‹˜ ๊ฐ•์˜๋“ค ๋“ฃ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค! ๋ฌธ์ œ ์‹œ ์‚ญ์ œํ• ๊ฒŒ์š” - -## 1. Priority queue(์šฐ์„ ์ˆœ์œ„ ํ) - -### ๐Ÿ‡ ๊ฐœ๋… - -* ํ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์•„์ดํ…œ์ด ๋จผ์ € ์ฒ˜๋ฆฌ๋จ - -### ๐Ÿ‡ ์šฐ์„ ์ˆœ์œ„ ํ ์ฃผ์š” ๋™์ž‘ - -1. insert : ์•„์ดํ…œ ์šฐ์„  ์ˆœ์œ„ ์ˆœ์œผ๋กœ ๋„ฃ์–ด์คŒ -2. delete : ๊ฐ€์žฅ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์„ ๋นผ๋ƒ„ -3. peek : delete์™€ ๊ฐ™์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ์ œ๊ฑฐ๋Š” ์•ˆํ•จ - -### ๐Ÿ‡ ์šฐ์„ ์ˆœ์œ„ ํ ๋™์ž‘ ๋ฐฉ์‹ ์„ค๋ช… - -![](https://velog.velcdn.com/images/prettylee620/post/273a6e9d-212d-48d9-870f-1c8657002fc8/image.png) - -1. delete๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ 20์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/b058280b-41ab-4849-8803-345285d88a01/image.png) - -2. ๋‘ ๋ฒˆ์งธ๋กœ delete๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ 10์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/a6b3a01b-5c3d-4fdd-9aa5-0a3c0c108277/image.png) - -3. ๋˜ delete๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด 5๊ธฐ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ![](https://velog.velcdn.com/images/prettylee620/post/febd8e08-de79-4724-92e3-76ff6c4ee32d/image.png) - -## 2. Heap - -### ๐Ÿ‡ ํž™์˜ ๊ฐœ๋… - -* ์ฃผ๋กœ ์ด์ง„ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„์ด ๋จ -* `ํŠธ๋ฆฌ(tree)` : ๋ถ€๋ชจ - ์ž๋…€์ฒ˜๋Ÿผ ๊ณ„์ธต์ ์ธ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ -* `์ด์ง„ ํŠธ๋ฆฌ` : ์ž๋…€๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์ธ ํŠธ๋ฆฌ - -#### max heap - -![](https://velog.velcdn.com/images/prettylee620/post/e3d76064-d7b4-4ef7-8b58-ffeda6a86b96/image.png) - -* ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค๊ฐ€ ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ํŠธ๋ฆฌ -* ์„œ๋ธŒํŠธ๋ฆฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ ์šฉ๋˜์–ด์•ผ ํ•จ - -#### min heap - -* max heap์˜ ๋ฐ˜๋Œ€ - -### ๐Ÿ‡ ํž™ ์ฃผ์š” ๋™์ž‘ - -1. insert : ํž™์˜ ์•„์ดํ…œ์„ ์ง‘์–ด๋„ฃ์„ ๋•Œ ํ‚ค๊ฐ’๋„ ๊ฐ™์ด ๋„ฃ์–ด์ค˜์•ผ ํ•จ -2. delete : ํ‚ค ๊ฐ’์ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋นผ๋ƒ„ -3. peek : delete์™€ ๊ฐ™์ง€๋งŒ ๊บผ๋‚ด์ง€๋Š” ์•Š๋Š”๋‹ค. - -### ๐Ÿ‡ max heap์˜ insert ๋™์ž‘ ์›๋ฆฌ ์„ค๋ช… - -![](https://velog.velcdn.com/images/prettylee620/post/3d7d80c8-f7cf-446a-911f-2cd3ab732680/image.png) - -1. max heap์—์„œ inert(17)ํ•˜๋ฉด 11๋ฒˆ์งธ ๊ณต๊ฐ„์— ์ผ๋‹จ 17์ด๋ผ๋Š” ๊ฐ’์„ ๋„ฃ์Œ - -![](https://velog.velcdn.com/images/prettylee620/post/8d1e69a7-c885-40e7-a98e-3b73c012a7ab/image.png) - -2. ๋ถ€๋ชจ๋ณด๋‹ค ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— 3์ด๋ž‘ ์Šค์œ„์นญ - -![](https://velog.velcdn.com/images/prettylee620/post/5b8c99c5-2f48-43fb-8490-afdf174de003/image.png) - -3. 15์™€ ๋˜ ๋น„๊ตํ•ด์คŒ - -![](https://velog.velcdn.com/images/prettylee620/post/c8e4194c-86c4-402a-8f7d-46dd414175d6/image.png) - -4. 20์ด๋ž‘ ๋น„๊ต ํ›„ ์ž๋ฆฌ ์•ˆ ๋ฐ”๊ฟ”๋„ ๋ผ์„œ ๋์ด ๋‚จ - -### ๐Ÿ‡ max heap์˜ delete ๋™์ž‘ ์›๋ฆฌ ์„ค๋ช… - -1. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ํŠธ๋ฆฌ ์ค‘์— ๊ฐ€์žฅ ํผ โ‡’ ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์‚ฌ๋ผ์ง - -![](https://velog.velcdn.com/images/prettylee620/post/ace0ae45-e3af-456e-bae2-90eff4864a01/image.png) - -2. ๊ทธ๋Ÿผ ๋ญ๋ฅผ ๋ฃจํŠธ๋…ธ๋“œ๋กœ ์˜ฌ๋ฆด๊นŒ? - -![](https://velog.velcdn.com/images/prettylee620/post/34aa8bd5-ef54-413d-b9da-bf03411b7ae6/image.png) - -3. ๊ทธ๋ฆฌ๊ณ  max heap์„ ์œ ์ง€์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด ์ž๋…€์™€ ๋น„๊ตํ•ด์„œ ์ฒด์ธ์ง€ ํ•ด์ค˜์•ผ ํ•จ - -* 15, 11๋ชจ๋‘ 2๋ณด๋‹ค ํฌ๊ธฐ์— ๊ทธ ์ค‘ ๋” ํฐ 15๋ฅผ ๋ฃจํŠธ ๋…ธ๋“œ๋กœ ์˜ฌ๋ฆผ - -![](https://velog.velcdn.com/images/prettylee620/post/312994b2-cd8c-4a72-94c5-0fbabe689c1f/image.png) - -4. ๋˜ ์ž๋…€์™€ ๋น„๊ต - -* 12, 3 ๋ชจ๋‘ 2๋ณด๋‹ค ํฐ๋ฐ 12๊ฐ€ ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— 12์™€ ์ฒด์ธ์ง€ - -![](https://velog.velcdn.com/images/prettylee620/post/dada83bc-7ee3-4010-95a9-3fabe30f4d70/image.png) - -5. ๋งˆ์ฐฌ๊ฐ€์ง€ ์ž๋…€์™€ ๋น„๊ต - -* 7๊ณผ 5๋ชจ๋‘ 2๋ณด๋‹ค ํฐ๋ฐ ๊ทธ ์ค‘ ๋” ํฐ 7์„ ์œ„๋กœ ์˜ฌ๋ฆฐ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/c3abe9b9-a8a3-43f8-b39d-db7e7f6f4c8b/image.png) - -## 3. priority queue์™€ Heap์˜ ๊ด€๊ณ„ - -### ๐Ÿ‡ ๊ด€๊ณ„ - -1. ํž™(Heap)์˜ ํ‚ค(key)๋ฅผ ์šฐ์„ ์ˆœ์œ„(priority)๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, **ํž™์€ ์šฐ์„ ์ˆœ์œ„ ํ(priority queue)์˜ ๊ตฌํ˜„์ฒด๊ฐ€ ๋œ๋‹ค.** -2. Priority queue = ADT(๊ตฌํ˜„์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋…์ ์ธ ๊ฒƒ๋งŒ ์„ค๋ช…) - 1. **์ถ”์ƒ ์ž๋ฃŒํ˜•**(abstract data type) - 2. `์ถ”์ƒ ์ž๋ฃŒํ˜•`์€ **๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ **์—์„œ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ๋‹ค๋ฅด๋‹ค. ๋น„์Šทํ•œ ๊ฐœ๋…์˜ ์ถ”์ƒ์  ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๊ฐ ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ช…๊ธฐํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์—์„œ๋Š” ์ด๊ฒƒ์กฐ์ฐจ ๋ช…๊ธฐํ•˜์ง€ ์•Š๋Š”๋‹ค. - 3. ์ถ”์ƒ ์ž๋ฃŒํ˜•์€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถ”์ƒํ™” ๊ณ„์ธต์„ ๋‘” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „๊ธฐ ๋ฐฅ์†ฅ์„ **์ถ”์ƒ ์ž๋ฃŒํ˜•**์— ๋น„์œ ํ•œ๋‹ค๋ฉด ๊ทธ ์†์— ๋“ค์–ด๊ฐ€๋Š” **๋ฐฅ์€ ์ž๋ฃŒ**๊ฐ€ ๋˜๊ณ , ๋ฐฅ์†ฅ์— ์žˆ๋Š” ์ทจ์‚ฌ, ์˜ˆ์•ฝ์ทจ์‚ฌ ๋ฒ„ํŠผ๋“ค๊ณผ ๋‚จ์€ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๋Š” ๋””์Šคํ”Œ๋ ˆ์ด์— ์–ด๋–ค ๋‚ด์šฉ๋“ค์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋ช…๊ธฐํ•œ ๊ฒƒ์ด๋‹ค. -3. Heap = data structure(๊ตฌํ˜„๊นŒ์ง€ ์žˆ์Œ) -4. ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ฒƒ๋“ค์ด ์žˆ๊ฒ ์ง€๋งŒ, ํž™์„ ๋Œ€์ฒด๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•ด์„œ ๋™์ผ์‹œ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๋‹ค. - -## 4. ์šฐ์„ ์ˆœ์œ„ ํ์™€ ํž™์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€ - -### ๐Ÿ‡ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง(process scheduling) - -1. cpu์—์„œ ํ˜„์žฌ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ p1์ด๋ผ๋ฉด p2, p3, p4๋Š” ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋Œ€๊ธฐํ•  ๋•Œ, `ready queue`์— ๋Œ€๊ธฐํ•œ๋‹ค. -2. ๊ทผ๋ฐ ready queue๊ฐ€ FIFO์ด ์•„๋‹ˆ๋ผ ์šฐ์„ ์ˆœ์œ„ ํ๋ผ๋ฉด P1์ด cpu ์ž‘์—…์„ ๋‹ค ๋๋ƒˆ์„ ๋•Œ, ๋“ค์–ด์˜จ ์ˆœ์ด ์•„๋‹ˆ๋ผ **์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์• ๊ฐ€** ๋จผ์ € ์ž‘์—…์„ ํ•˜๊ฒŒ ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/96fdd7e2-c54e-45b9-8774-a3c8719d7922/image.png) - -### ๐Ÿ‡ heap sort(ํž™ ์ •๋ ฌ) - -1. ์ •๋ ฌ n๊ฐœ์˜ ์•„์ดํ…œ โ‡’ ํž™์— ๋‹ค ๋„ฃ์–ด์„œ ์ฐจ๋ก€์ฐจ๋ก€ delete() ์‹œ ์ •๋ ฌ๋˜์–ด์„œ ๋‚˜์˜ค๊ฒŒ ๋จ - -### ๐Ÿ‡ Heap ๋ฉ”๋ชจ๋ฆฌ๋„? ํž™๊ณผ ๊ฐ™๋‚˜..? - -* No, ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™์€ ์˜ค๋Š˜ ๋ฐฐ์šด ํž™๊ณผ๋Š” ๊ด€๋ จ์ด ์—†๋‹ค -* ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™์€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋”๋ฏธ ๋Š๋‚Œ - -#### ํž™ ๋ฉ”๋ชจ๋ฆฌ - -1. **์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‹จ์  ๋ณด์™„** - 1. ์ˆ˜๋ช… : ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ์ˆœ๊ฐ„ ๊ทธ ์•ˆ์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค ๋‚ ๋ผ๊ฐ€๋ฉฐ, ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์–ธ์ œ๋‚˜ ์‚ด์•„์žˆ๊ณ , ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์œ ํšจ - 2. ํฌ๊ธฐ : ์Šคํƒ๋ฉ”๋ชจ๋ฆฌ๋Š” ํŠน์ • ์šฉ๋„๋กœ ๋–ผ์–ด๋†“์€ ๊ฒƒ์ด๋ผ ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค. ์šฉ๋Ÿ‰์˜ ์ œํ•œ์  -2. **ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ์žฅ์ \[unmanaged]** - 1. ํฌ๊ธฐ : ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ CPU๊ฐ€ ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์•ˆ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— **ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์›ํ•˜๋Š” ๋•Œ, ์›ํ•˜๋Š” ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๋ฐ›์•„์™€ ์‚ฌ์šฉํ•˜๊ณ  ์›ํ•  ๋•Œ ๋ฐ˜๋‚ฉ(ํ•ด์ œ) ํ•  ์ˆ˜ ์žˆ๋‹ค.** - 2. ์šฉ๋Ÿ‰ ์ œํ•œ ์—†์Œ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ช…์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด, ์ปดํ“จํ„ฐ์— ๋‚จ์•„์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋งŒํผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ โ‡’ ํ˜ธ์ถœ์ด ๋๋‚œ๋‹ค๊ณ  ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. -3. **ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‹จ์ ** - 1. **๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์œ„ํ—˜์„ฑ ์žˆ์Œ** : ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด์ธ JAVA๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๋ฐ›์„ ๋•Œ new ํ‚ค์›Œ๋“œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ ํ›„์—๋Š” ํ•ด์ œ ์‹ ๊ฒฝ์„ ์•ˆ์“ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ์•Œ์•„์„œ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ **c๋Š” ์–ธ๋งค๋‹ˆ์ง€๋“œ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.** - 2. **์Šคํƒ์— ๋น„ํ•ด ํ• ๋‹น/ํ•ด์ œ ์†๋„๊ฐ€ ๋Š๋ฆผ** : ํ•จ์ˆ˜๊ฐ€ ์š”์ฒญํ•œ ๋งŒํผ์˜ ํฌ๊ธฐ ๋นˆ ๊ณต๊ฐ„์„ ์ฐพ์œผ๋ ค๊ณ  ์ด๋ฆฌ์ €๋ฆฌ ์ฐพ์•„์•ผ ํ•œ๋‹ค. - -#### ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ vs ํž™ ๋ฉ”๋ชจ๋ฆฌ - -| ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ | ํž™ ๋ฉ”๋ชจ๋ฆฌ | -| ------------------------------------- | ----------------------- | -| ์ •์  ๋ฉ”๋ชจ๋ฆฌ | ๋™์  ๋ฉ”๋ชจ๋ฆฌ | -| ์˜คํ”ˆ์…‹ ๊ฐœ๋…์œผ๋กœ ์ •ํ™•ํžˆ ๋ช‡ ๋ฐ”์ดํŠธ์”ฉ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ปดํŒŒ์ผ ์‹œ ๊ฒฐ์ • | ์‹คํ–‰ ์ค‘์— ํฌ๊ธฐ์™€ ํ• ๋‹น/ํ•ด์ œ ์‹œ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋จ | diff --git a/developLog/algorithm-datastructure/data-structure/undefined.md b/developLog/algorithm-datastructure/data-structure/undefined.md deleted file mode 100644 index d4c55fa..0000000 --- a/developLog/algorithm-datastructure/data-structure/undefined.md +++ /dev/null @@ -1,136 +0,0 @@ -# ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ - -์ถœ์ฒ˜ : [https://www.youtube.com/watch?v=K1PlysPgNZY\&t=20s](https://www.youtube.com/watch?v=K1PlysPgNZY\&t=20s) - -์‚ฌ์ง„ ์ถœ์ฒ˜ : ฤen @Quyetnguyen0330 - -## 1. ์„ ํ˜• ๊ตฌ์กฐ๋ž€? - -*** - -1. **์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๋ถ„๋ฅ˜** - -| ๊ตฌ์กฐ | ์„ค๋ช… | ์ข…๋ฅ˜ | -| ------ | --------------------- | -------------- | -| ์„ ํ˜• ๊ตฌ์กฐ | ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ | ๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ, ๋ฐํฌ | -| ๋น„์„ ํ˜• ๊ตฌ์กฐ | ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์—ฐ์†์ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ | ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„ | - -2. **๋ฆฌ์ŠคํŠธ** - -| ์ข…๋ฅ˜ | ์„ค๋ช… | -| ------------------------------------------------------------ | --------------------------------------------------------------------------------- | -| ์„ ํ˜• ๋ฆฌ์ŠคํŠธ | | -| (Linear List) | - ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์—ฐ์†๋˜๋Š” ๊ธฐ์–ต ์žฅ์†Œ์— ์ €์žฅ๋˜๋Š” ๋ฆฌ์ŠคํŠธ | -| ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์กฐ : ๋ฐฐ์—ด(Array) ๋“ฑ | | -| ๊ฐ€์žฅ ๊ฐ„ํŽธํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋ฉฐ, ์ ‘๊ทผ ๊ตฌ์กฐ๊ฐ€ ๋น ๋ฆ„ | | -| ์ˆœ์ฐจ์  | | -| ์ž๋ฃŒ ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ๊ธฐ์กด ์ž๋ฃŒ์˜ ์ด๋™์ด ํ•„์š” | | -| ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ | | -| (Linked List) | ๋…ธ๋“œ(๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๋ถ€๋ถ„๊ณผ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ €์žฅ๊ณต๊ฐ„)์˜ ํฌ์ธํ„ฐ(=๋งํฌ) ๋ถ€๋ถ„์œผ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ์‹œํ‚จ ๋ฆฌ์ŠคํŠธ๋ฐ์ดํ„ฐ(Data)ํฌ์ธํ„ฐ(Pointer) | -| ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์ด์ค‘์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌ๋ถ„ | | -| ์ˆœ์ฐจ์ ์ด์ง€ ์•Š์Œ | | -| cf. ์—ฐ์† ๋ฆฌ์ŠคํŠธ(์ˆœ์ฐจ์ ) | | -| ๋…ธ๋“œ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์„ ํ˜• ๋ฆฌ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ ํŽธ๋ฆฌ | | -| ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ์ €์žฅ๊ณต๊ฐ„์ด ์ถ”๊ฐ€๋กœ ํ•„์š” | | -| ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ์ฐพ๋Š” ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋˜์–ด ์„ ํ˜• ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๋Š๋ฆผ | | - -## 2. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ž€? - -
- -### 1) ๊ฐœ๋… - -* ์—ฐ์†๋œ `๋…ธ๋“œ(Node)`์˜ ์—ฐ๊ฒฐ์ฒด -* ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์‹ผ ๋…ธ๋“œ๋ฅผ ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ๊ณต๊ฐ„์ ์ธ ํšจ์œจ์„ฑ์„ ๊ทน๊ฐœํ™”์‹œํ‚จ ์ž๋ฃŒ ๊ตฌ์กฐ - -### 2) ๋…ธ๋“œ(Node) - -
- -* ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ์ด๋ฉฐ, `๋ฐ์ดํ„ฐ & ๋งํฌ`์ด 2๊ฐ€์ง€์˜ ํ•„๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ -* data : ๋…ธ๋“œ๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ/๊ฐ’, ๋ฌธ์ž์—ด, ์ˆซ์ž ๋“ฑ๋“ฑ ์›ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ๊ณ  ์ €์žฅ -* next : ๋งํฌ/ ํฌ์ธํ„ฐ ์—ญํ• , ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ -* **์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ** `prev ํฌ์ธํ„ฐ(์ด์ „ ๋…ธ๋“œ์˜ ์ฃผ์†Œ)`์ถ”๊ฐ€ - -### 3) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ตฌ์กฐ - -
- -1. ๋งˆ์ง€๋ง‰ ์—ฐ๊ฒฐํ•  ๊ฒƒ์€ ์—†๊ธฐ์— null๊ณผ ์—ฐ๊ฒฐ -2. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์ฆ‰, ์‹œ์ž‘ ์ง€์ ์— ์žˆ๋Š” ๊ฒƒ์„ `head`๋ผ๊ณ  ํ•จ -3. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰์€ `tail`๋ผ๊ณ  ๋ถ€๋ฆ„ - -### 4) ๋ฐฐ์—ด vs ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ - -
- -#### ๋ฐฐ์—ด - -1. ๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์•ˆ์— ๋ชจ๋“  ์›์†Œ๋“ค์ด ์ด์–ด์ง„ ๊ณต๊ฐ„์— ์ž๋ฆฌ ์žก์Œ -2. **์ธ๋ฑ์Šค**๋ฅผ ํ†ตํ•ด ์›์†Œ ํƒ์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅ -3. **random access ๊ฐ€๋Šฅ** : ๋ฐฐ์—ด์˜ n๋ฒˆ์งธ ์›์†Œ ๋ฐฉ๋ฌธ ์‹œ `O(1)` ์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋Šฅ EX. arr\[3] -4. ์›์†Œ ์‚ฝ์ž… & ์‚ญ์ œ ์ผ๋ฐ˜์ ์œผ๋กœ `O(N)` ์‹œ๊ฐ„ ์†Œ์š” โ‡’ ์›์†Œ ๊ฐœ์ˆ˜ ๋Œ€๋กœ ๋Š˜์–ด๋‚จ - -#### 5) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ - -1. ์ด์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์•„๋‹Œ ๋ถˆํŠน์ •ํ•œ ๊ณต๊ฐ„์— ์กด์žฌ -2. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— **ํฌ์ธํ„ฐ, ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ**์„ ํ†ตํ•ด ์—ฐ๊ฒฐ -3. ๋…ธ๋“œ์˜ ํƒ์ƒ‰์€ **์„ ํ˜•์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ** -4. c๋ฅผ ๊ฐ€๋ ค๋ฉด a, b๋ฅผ ๊ฑฐ์ณ ๊ฐ -5. `random access` ๋ถˆ๊ฐ€๋Šฅ : ๋ฆฌ์ŠคํŠธ์˜ n๋ฒˆ์งธ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์‹œ O(N)์‹œ๊ฐ„ ์†Œ์š” โ‡’ head ๋…ธ๋“œ๋ถ€ํ„ฐ n๋ฒˆ์งธ ๋…ธ๋“œ๊นŒ์ง€ ์ˆœํšŒ -6. ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฐฐ์—ด๋ณด๋‹ค ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ์‚ฝ์ž… & ์‚ญ์ œ -7. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ๋ฅผ ๋งจ ์•ž์— ์‚ฝ์ž… ์‹œ์ผœ์ค„ ๋•Œ๋Š” head ๋…ธ๋“œ์˜ ์ฐธ์กฐ์œ„์น˜๋งŒ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ `O(1)` ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ - -### 6) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์ข…๋ฅ˜ - -#### Singly Linked List(๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) - -
- -1. ๋Œ€๋ถ€๋ถ„์˜ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๋ฌธ์ œ์˜ ์ฃผ๋ ฅ -2. ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค -3. ์ผ๋ฐฉํ–ฅ์ด๋‹ค. - -#### Doubly Linked List(์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) - -
- -1. ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์™€ ์ด์ „ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฅด์น˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. -2. ์•ž ๋’ค๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒŒ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋…ธ๋“œ๋งˆ๋‹ค 2๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ์™€ ํ๋ฆ„์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ - -#### Circular Linked List(์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) - -
- -* ์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ง€๋งŒ **๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์˜ next ํฌ์ธํ„ฐ๊ฐ€ ํ—ค๋“œ ๋…ธ๋“œ**๋ฅผ ๊ฐ€๋ฅด์นœ๋‹ค. - -### 6) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• - -#### ๋…ธ๋“œ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• - -
- -```jsx -class Node{ - constructor(data){ - this.data = data; - this.next = null; - } -} -``` - -#### ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ - -
- -```jsx -let head = new Node("a"); -head.next = new Node("b"); -head.next.next = new Node("c"); -head.next.next.next = new Node("d"); -``` - -1. ์‹œ์ž‘์  : head ๋ณ€์ˆ˜์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ a๋ผ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์ƒ์„ฑ -2. head๋ผ๋Š” ๋…ธ๋“œ์— next๋ผ๋Š” ์ฐธ์กฐ ํฌ์ธํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•  ๋…ธ๋“œ b๋กœ ์ง€์ • -3. ๋…ธ๋“œ b๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋…ธ๋“œ c๋กœ ์ง€์ • -4. ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ ์ง€์ • diff --git a/developLog/book/learn-errors/1.md b/developLog/book/learn-errors/1.md deleted file mode 100644 index 64fd8da..0000000 --- a/developLog/book/learn-errors/1.md +++ /dev/null @@ -1,226 +0,0 @@ ---- -description: ์‚ฌ๋žŒ๋“ค์ด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ณ ๋„ ๋„˜์–ด๊ฐ€๊ฑฐ๋‚˜ ์—๋Ÿฌ๋ฅผ ๋ฌด์„œ์›Œ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ? ---- - -# 1์žฅ ์—๋Ÿฌ๊ฐ€ ์™œ ๋ฌด์„œ์šธ๊นŒ? - -> ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์— ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์—๋Ÿฌ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์™€ ์›์ธ ํŒŒ์•…์ด ํ•„์š”ํ•œ ๋ฌธ์ œ๋‹ค.\ -> - -## 1. ์—๋Ÿฌ๋ฅผ ์ฝ์ง€ ์•Š๊ฒŒ ๋˜๋Š” ์ด์œ  - -### 01. ์ด์œ  1 : ์—๋Ÿฌ๊ฐ€ ์˜์–ด๋ผ์„œ - -์—๋Ÿฌ์— ๋Œ€ํ•ด์„œ๋Š” ์ž์‹ ์ด ์—†๋Š” ์‚ฌ๋žŒ๋„ ๋งŽ๋‹ค. ์—๋Ÿฌ๋ฅผ ๋Œ€ํ•˜๋Š” ๋งˆ์Œ๊ฐ€์ง์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ์—๋Ÿฌ๋ฅผ ์ฝ์ง€ ์•Š๊ฒŒ ๋˜๋Š” ์ด์œ ๋Š” ๊ฐ€์žฅ ํฐ ๊ฒƒ์ด ์—๋Ÿฌ๊ฐ€ ์˜์–ด๋กœ ํ‘œ๊ธฐ๋˜๊ธฐ ๋•Œ๋ฌธ\ - - -> ํŽธํ•˜๊ฒŒ ์—๋Ÿฌ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํฌ์ธํŠธ๋ฅผ ์ฐพ๊ธฐ! - -* ์ฝ”๋“œ ์–‘์ด ์ ์€ ๊ฒƒ์€ ๋ฐ”๋กœ๋ฐ”๋กœ ์ฝ์ž\ - - -#### 1) ๊ฐ„๋‹จํ•œ ๋ฌธ๋ฒ• ์ง€์‹๋งŒ ์žˆ์œผ๋ฉด OK - -> ์˜์–ด๊ฐ€ ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ผ์ƒ ํšŒํ™” ์ˆ˜์ค€์˜ ์˜์–ด๋ฅผ ๋‹น์žฅ ์ตํžˆ๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€๋งŒ ์—๋Ÿฌ ๋‚ด์šฉ์„ ์ฝ๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ! - -\ -์—๋Ÿฌ๋Š” ๋ฌธ์žฅ์˜ ํ˜•์‹์ด ์ •ํ•ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์–ด๋„ ํ•œ์ •์ ์ด๋‹ค. - -``` -X is not definded -``` - -define =์ •์˜ํ•˜๋‹ค๋ผ๋Š” ์˜๋ฏธ ์ด๋ฉฐ, is not defied๋Š” be๋™์‚ฌ + not(๋ถ€์ •) + ๊ณผ๊ฑฐ๋ถ„์‚ฌ์ธ ์ˆ˜๋™ํƒœ์˜ ๋ถ€์ •๋ฌธ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ์˜๋ฏธ\ - - -> ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์žฅ์„ ์ฝ์„ ๋•Œ๋Š” ์ฃผ์–ด์™€ ์ˆ ์–ด๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. - -\ -๋จผ์ €, ๋ฌธ๋ฒ•์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฉ”์‹œ์ง€์™€ ์˜๋ฏธ๋ฅผ ํ™•์ธํ•˜์Ÿˆ - -#### 2) ์ฃผ์–ด๊ฐ€ ์ƒ๋žต๋œ ์ผ€์ด์Šค - -``` -Cannot read properties of null -``` - -null ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.\ - - -1. ์ˆ ์–ด : Cannot read -2. ์ฃผ์–ด : The program - -> ๋Œ€๋ถ€๋ถ„ ์—๋Ÿฌ์˜ ์ฃผ์ฒด๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž์ฒด๋ฅผ ์˜๋ฏธ ์ฆ‰, The programm์„ ๋ถ™์ผ ๊ฒƒ - -``` -The programm cannot read properties of null. -``` - -์ด์™€ ๊ฐ™์ด ์—๋Ÿฌ์˜ ์ฃผ์–ด๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์™€ ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•  ๋•Œ๋Š” ์ฃผ์–ด๊ฐ€ ์ƒ๋žต๋˜๋ฉฐ, ์˜์–ด ๋ฌธ๋ฒ•์˜ ํŠน์ง•์ƒ ์ฃผ์–ด๋ฅผ ์ œ์ผ ์•ž์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.\ - - -#### 3) ๊ฐ„๋‹จํ•œ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ์ผ€์ด์Šค(๋ช…์‚ฌ๊ตฌ๋งŒ์„ ์‚ฌ์šฉ) - -> ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์—๋Š” ์ฃผ์–ด์™€ ์ˆ ์–ด๊ฐ€ ๋ชจ๋‘ ์ƒ๋žต๋œ ํ‘œํ˜„๋„ ์žˆ๋‹ค. - -``` -Invalid array length -``` - -* Invalid = ์œ ํšจํ•˜์ง€ ์•Š์€ -* array length = ๋ฐฐ์—ด์˜ ๊ธธ์ด - -\ -๋ช…์‚ฌ๊ตฌ๋งŒ ์กด์žฌํ•˜๊ณ , ์ฃผ์–ด์™€ ์ˆ ์–ด๋งŒ ์žˆ์–ด์„œ ๋ถˆ์นœ์ ˆํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‚˜ ์ด์™€ ๊ฐ™์€ ํ‘œํ˜„์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ..\ - - -> ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. - -``` -Unexpected token '['- ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ํ† ํฐ '['missing ) after argument list- ์ธ์ˆ˜ ๋ฆฌ์ŠคํŠธ ๋’ค์— )๊ฐ€ ์—†์Œ -``` - - - -#### 4) ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์–ด์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน์œ ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋‹จ์–ด - -> ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์—๋Š” ์ผ๋ฐ˜์ ์ธ ๋‹จ์–ด ์ด์™ธ์—๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ณ ์œ ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด ๋‹จ์–ด๋“ค์€ ์‚ฌ์ „์  ์˜๋ฏธ๋ฅผ ์ฐพ์•„๋ด๋„ ์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ๋งŒ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ์ด๋“ค์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์šฉ์–ด๋กœ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•จ - -| ์ž์ฃผ ๋‚˜์˜ค๋Š” ๋‹จ์–ด | ์˜๋ฏธ | -| ------------------- | ----------- | -| valid/invalid | ์œ ํšจํ•œ/์œ ํšจํ•˜์ง€ ์•Š์€ | -| expected/unexpected | ๊ธฐ๋Œ€ํ•œ/๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์€ | -| defined/undefined | ์ •์˜๋œ/์ •์˜๋˜์ง€ ์•Š์€ | -| declared/undeclared | ์„ ์–ธ๋œ/์„ ์–ธ๋˜์ง€ ์•Š์€ | -| reference | ์ฐธ์กฐ | -| require | ํ•„์š”ํ•œ | -| deprecated | ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” | -| expired | ๋งŒ๋ฃŒ๋œ | -| apply | ์ ์šฉํ•˜๋‹ค | -| deny | ๊ฑฐ๋ถ€ํ•˜๋‹ค | -| permission | ํ—ˆ๊ฐ€ | -| range | ๋ฒ”์œ„ | -| missing | ๋ณด์ด์ง€ ์•Š๋Š”(๋น ์ง„) | - -| ๋‹จ์–ด | ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณ ์œ ์˜ ์˜๋ฏธ | -| ---------------------- | ------------ | -| function/argument | ํ•จ์ˆ˜/์ธ์ˆ˜ | -| variable/constant | ๋ณ€์ˆ˜/์ƒ์ˆ˜ | -| object/property/method | ๊ฐ์ฒด/์†์„ฑ/๋ฉ”์„œ๋“œ | -| expression/statement | ์‹/๋ฌธ | -| operator/operand | ์—ฐ์‚ฐ์ž/ํ”ผ์—ฐ์‚ฐ์ž | -| token | ํ† ํฐ | -| initializer | ์ด๋‹ˆ์…œ๋ผ์ด์ € | -| mutable/immutable | ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š”/๋ถˆ๋ณ€์˜ | -| iteration/iterable | ๋ฐ˜๋ณต/๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” | -| assignment | ํ• ๋‹น | - -### 02. ์ด์œ  2 : ๊ธธ์–ด์„œ ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ค์›€ - -``` -ReferenceError; nickname is not defined ย at fn3 (/Users/naera/section-1/app.js:14:3) ย at fn2 (/Users/naera/section-1/app.js:10:3) ย at fn1 (/Users/naera/section-1/app.js:6:3) ย at /Users/naera/section-1/app.js:18:16 ย at Layer.handle [as handle.request] (/Users/naera/section-1/p ย nodejnodules/express/lib/router/layer.js:95:5) ย at next (/Users/naera/section-l/node.modules/express/lib/p ย router/route.j s:144:13) ย at Route.dispatch (/Users/naera/section-1/node_modules/p ย express/lib/router/route.js:114:3) ย at Layer.handle [as handle.request] (/Users/naera/section-1/p ย node_modules/express/lib/router/layer.js:95:5) ย at /Users/naera/section-1/node_modules/express/lib/router/p ย index.js:284:15 ย at Function.process_params (/Users/naera/section-1/p ย nodejnodules/express/lib/router/index.js:346:12) -``` - -> ๊ธด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์—์„œ ์ฃผ์˜ํ•ด์„œ ์ฝ์–ด์•ผ ํ•  ๋ถ€๋ถ„์€ ๋Œ€๋žต 2\~3ํ–‰ ์ •๋„๋‹ค. - -\ -์—๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์š”์†Œ - -1. ์—๋Ÿฌ์˜ ์ข…๋ฅ˜ : Uncaught ReferenceError -2. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ : nickname is not defined -3. ์Šคํƒ ํŠธ๋ ˆ์ด์Šค - -\ -์œ„ ์‚ฌ์ง„์—์„œ๋Š” ๋‹จ ๋‘ ํ–‰์˜ ๋ฉ”์‹œ์ง€๋งŒ ์ฝ์œผ๋ฉด ๋œ๋‹ค. - -``` -ReferenceError : nickname is not definedat fn3 (/Users/naera/section-1/app.js:14:3) -``` - -์ฐธ์กฐ ์—๋Ÿฌ : nickname์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.\ - - -> ์ฆ‰, ์—๋Ÿฌ๋Š” ์ „๋ถ€ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž. ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋งŒ ์•Œ๋ฉด ์ฝ๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. - - - -### 03. ์ด์œ  3 : ์ฝ์–ด๋„ ๋ฐ”๋กœ ์›์ธ์„ ํŒŒ์•… ํ•  ์ˆ˜ ์—†์Œ - -์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•œ ์œ„์น˜์™€ ๊ทผ๋ณธ์ ์ธ ์›์ธ์ด ๋‹ค๋ฅผ ๋•Œ๋„ ์žˆ๋‹ค.\ - - -> ์—๋Ÿฌ๋Š” ํ™•์ธํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋„๋ฌด์ง€ ๋– ์˜ค๋ฅด์ง€ ์•Š์„ ๋•Œ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. - -\ -์ด๋Ÿฌํ•œ ๊ฒฝํ—˜์ด ๋ฐฉ๋ฒ•๋˜๋ฉด์„œ ์—๋Ÿฌ์— ์ž์‹ ์ด ์—†์–ด์ง€๊ณ  ์—๋Ÿฌ๋ฅผ ์ฝ์ง€ ์•Š๊ฒŒ ๋˜๋Š” ์‚ฌ๋žŒ์ด ๋งŽ์„ ๊ฒƒ - -#### 1) ์—๋Ÿฌ์˜ ๋ฐœ์ƒ ์œ„์น˜์™€ ๊ทผ๋ณธ์ ์ธ ์›์ธ์ด ๋‹ค๋ฅผ ๋•Œ - -``` -function hello(user) { | ย console.log('์•ˆ๋…•ํ•˜์„ธ์š” ${user.nickname} ๋‹˜'); .------ ์—ฌ๊ธฐ์„œ ์—๋Ÿฌ ๋ฐœ์ƒ} -``` - -\ -์—๋Ÿฌ์˜ ๋‚ด์šฉ : null ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.(nickname์„ ์ฝ์œผ๋ ค๊ณ  ํ•จ) - -``` -Cannot read properties of null (reading 'nickname') -``` - -\ -์ด ์—๋Ÿฌ๋Š” null์€ nickname ์†์„ฑ์„ ์ฝ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ์—์„œ nickname ์†์„ฑ์„ ์ฝ๋Š” ๋ถ€๋ถ„์€ ${user.nickname}์ด๋‹ค.\ - - -> ์ฆ‰, user๊ฐ€ null์ด ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ด๋‹ค. - -\ -user๋Š” hello() ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€ ๋ถ„์€ hello() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„\ -๋‹ค์–‘ํ•œ ์œ„์น˜์—์„œ ํ˜ธ์ถœ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, hello(user1), hello(user2) ๋“ฑ ์‹ค์ œ ์›์ธ์ด ๋˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ ๋ฐ”๋กœ ํ•ด๊ฒฐ์„ ํ•  ์ˆ˜ ๋Š” ์—†์ง€๋งŒ, ์—๋Ÿฌ๋ฅผ ์ž์„ธํžˆ ์ฝ์–ด๋ณด๋ฉด ํšจ์œจ์ ์ธ ๊ทผ๋ณธ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.\ - - -#### 2) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์˜ ์ฝ”๋“œ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ - -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ๋ชจ์•„๋‘” ์ฝ”๋“œ์ด๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ์—์„œ ์›์ธ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‚œ์ด๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค.\ - - -``` -const { Client } = require("pg");const client = new Client({ ย user: "alice", ย password: "password", ย database: "myDb",})๏ผ›const connectClient = async () => { ย await client.connect();}๏ผ›connectClient(); -``` - -์—๋Ÿฌ - -``` -error: password authentication failed for user "alice" ย at Parser.parseErrorMessage (/Users/naera/project/ๅธnode_niodules/pg-protocol/dist/parser.js:287:98) ย at Parser.handlePacket (/Users/naera/project/node_modules/ppg-protocol/dist/parser.js:126:29) ย at Parser,parse (/Users/naera/project/node.modules/ppg-protocol/dist/parser.js:39:38) ย at Socket. (/Users/naera/project/node_modules/ppg-protocol/dist/index.js:11:42) ย at Socket.emit (node:events:513:28) ย at addChunk (node:internal/streanis/readable:324:12) ย at readableAddChunk (nodezinternal/streams/readable:297:9) ย at Readable.push (node:internal/streams/readable:234:10) ย at TCP.onStreamRead (node:internal/strean)_base_coniinons:190:23) -``` - - - -> ์‹ค์ œ๋กœ ์ด ์—๋Ÿฌ๋Š” ์ž์‹ ์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ์—์„œ ์–ด๋””์— ์›์ธ์ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„์ด ์—†๋‹ค. - -\ -์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์€ 2ํ–‰์˜ ์–ด๋–ค ํŒŒ์ผ์ด์ง€๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ์œ ์ € ์ •๋ณด์™€ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ‹€๋ฆฐ ๊ฒƒ์ด ์—๋Ÿฌ์˜ ์›์ธ**์ด๋‹ค. - -\ -ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์—๋Ÿฌ๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์—๋Ÿฌ๋ฅผ ์ฝ์œผ๋ฉด ์กฐ๊ธˆ์”ฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ธˆ์”ฉ ๋ฐœ์ „ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์—๋Ÿฌ๋ฅผ ๋Œ€ํ•˜๋„๋ก ํ•˜์ž\ - - -## 2. ์—๋Ÿฌ๋ฅผ ํ–ฅํ•œ ๋งˆ์Œ๊ฐ€์ง - -### 1) ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์ž - -> ๋ฐ”๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜๋Š” ์—†๋”๋ผ๋„ ํžŒํŠธ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค. - -\ -์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์˜์—ญ๊ณผ ๋‚œ์ด๋„๊ฐ€ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ์—๋Ÿฌ๋ฅผ ์ œ๋Œ€๋กœ ํ™•์ธํ•˜๊ธฐ๋งŒ ํ•ด๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋„ ๋งŽ๋‹ค.\ - - -### 2) ์–ด๋ ค์šด ์—๋Ÿฌ๋Š” ์ข‹์€ ํ•™์Šต์˜ ๊ธฐํšŒ - -> ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋งˆ์Œ๊ฐ€์ง์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š” - - - -### 3) ์—๋Ÿฌ๋ฅผ ์ฝ๋Š” ์Šคํ‚ฌ์€ ํ•ญ์ƒ ๋„์›€์ด ๋œ๋‹ค. - -์—๋Ÿฌ๋Š” ํฌ๋งท์ด ์ •ํ•ด์ ธ ์žˆ๊ณ  ์ข…๋ฅ˜๋„ ์ •ํ•ด์ ธ ์žˆ๋‹ค. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ž์„ธํžˆ ์ฝ๊ณ  ๋‚ด์šฉ์„ ์ดํ•ดํ•ด๋‘๋ฉด ์ดํ›„์—๋Š” ๊ฐœ๋ฐœ์ด ํŽธํ•ด์ง„๋‹ค.\ -์—๋Ÿฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์•„๊ตฐ์ด๋‹ค.\ diff --git a/developLog/book/learn-errors/2.md b/developLog/book/learn-errors/2.md deleted file mode 100644 index b246102..0000000 --- a/developLog/book/learn-errors/2.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -description: ํšจ์œจ์ ์œผ๋กœ ์—๋Ÿฌ๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•, ์—๋Ÿฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ข…๋ฅ˜ ---- - -# 2์žฅ ์—๋Ÿฌ๋ฅผ ์ž˜ ์ฝ๋Š” ๋ฐฉ๋ฒ• - -## 01. ์—๋Ÿฌ์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์•Œ์•„๋ณด์ž - -> ์—๋Ÿฌ๋ฅผ ์ˆ ์ˆ  ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—๋Ÿฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. - -1. ์—๋Ÿฌ์˜ ์ข…๋ฅ˜ -2. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ -3. ์Šคํƒ ํŠธ๋ ˆ์ด์Šค - -### 1. ์—๋Ÿฌ์˜ ์ข…๋ฅ˜ - -> ์—๋Ÿฌ์˜ ์ข…๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ข…๋ฅ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์—๋Ÿฌ์˜ ๋Œ€๋žต์ ์ธ ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - -1. ReferenceError : ์ฐธ์กฐ ์—๋Ÿฌ - -* ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜ ๋“ฑ์„ ์ฐธ์กฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ(์ •์˜ ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒƒ ์ฐธ์กฐํ•  ๋•Œ) -* ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ์˜ˆ์ธก : ๋ณ€์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ - -```javascript -let message = "์ฆ๊ฑฐ์šด ๋””๋ฒ„๊น…";function showMessageO { ย  - console.log(mesage); - s๊ฐ€ ํ•˜๋‚˜ ๋น ์ ธ ์žˆ์Œ -}showMessage(); - -``` - -``` -ReferenceError: mesage is not defined -``` - -์ฐธ์กฐ ์—๋Ÿฌ: mesage๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Œ\ -๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋„, ์žˆ๋‹ค - -
if (true) { ย 
-    const message = "์ฆ๊ฑฐ์šด ๋””๋ฒ„๊น…";
-}
-function showMessage() { ย 
-    console.log(message); ------ ์—๋Ÿฌ์˜์›์ธ
-}
-showMessage();
-
- -\ -`์Šค์ฝ”ํ”„scope๏ผˆ์œ ํšจ ๋ฒ”์œ„๏ผ‰`๋Š” if ๋ฌธ์˜ ๋ธ”๋ก๏ผˆ{ \~ } ๋‚ด๋ถ€๏ผ‰์œผ๋กœ ํ•œ์ • ๋œ๋‹ค. ์ด์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋”๋ผ๋„ ์Šค์ฝ”ํ”„๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ **ReferenceError**๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. - -> ์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ - -\ -2\. ArgumentCountError - -* ํ•จ์ˆ˜์˜ ์ธ์ˆ˜(argument)์˜ ์ˆ˜(count)๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์„ ์˜๋ฏธ -* ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ์˜ˆ์ธก : ์ •์˜๋œ ํ•จ์ˆ˜์™€ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„ ํ™•์ธ - -\ -3\. SyntaxError : ๋ฌธ๋ฒ• ์—๋Ÿฌ - -> ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ๋กœ์ง์„ ํ™•์ธํ•  ํ•„์š”๋Š” ์—†๋‹ค. ๋”ฐ๋ผ์„œ ํ‘œ๊ธฐ ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„์„ ์ค‘์ ์œผ๋กœ ์ฐพ์œผ๋ฉด ๋œ๋‹ค. - -* ์ฝ”๋“œ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒ - -```javascript -function add [a, b] { ย  - return a + b; -}๏ผ› -``` - -``` -SyntaxError: Unexpected token '[' -``` - -๋ฌธ๋ฒ• ์—๋Ÿฌ : ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ํ† ํฐ \[\ - - -4\. TypeError : ํƒ€์ž… ์—๋Ÿฌ - -* ๊ฐ’์ด ๋ถ€์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ -* ์˜ˆ์‹œ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” length ์†์„ฑ์„ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ null์— ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ - -``` -"hello".length null.length -``` - -``` -TypeError: Cannot read properties of null (reading 'length') -``` - -\ -5\. RangeError : ๋ฒ”์œ„ ์—๋Ÿฌ - -* ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋ฒ”์œ„์˜ ๊ฐ’์„ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•  ๋•Œ ๋ฐœ์ƒ - -> ์ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋Š” ์ธ์ˆ˜์˜ ๊ฐ’์„ ํ™•์ธํ•˜์ž - -\ -์—๋Ÿฌ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ฉด ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ• ์ง€ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.\ - - -#### 1) ์—๋Ÿฌ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ฉด ์›์ธ๊ณผ ๋Œ€์ฑ…์„ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฝ๋‹ค. - -> ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ ์‹œ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ์ง€์‹์„ ์Œ“์•„๊ฐ€์ž. - -\ - - -### 2. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ - -> ์ด ๋ถ€๋ถ„์˜ ์—๋Ÿฌ๋ฅผ ์ฝ์ง€ ์•Š๊ณ ์„œ๋Š” ํšจ์œจ์ ์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ถˆ๊ฐ€ - -\ -๋‹จ์–ด์˜ ์˜๋ฏธ๋ฅผ ์ฐพ์•„๋ณด๊ณ  ๋ฉ”์‹œ์ง€์˜ ์˜๋ฏธ๋ฅผ ํ™•์‹คํžˆ ์ดํ•ดํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋น ๋ฅธ ๊ธธ\ - - -### 3. ์Šคํƒ ํŠธ๋ ˆ์ด์Šค(stack trace) - -> ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ๊นŒ์ง€์˜ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ, ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ•  - -#### 1) ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๊ฐ€ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ - -> ์ž‘์—…์˜ ํ๋ฆ„๊ณผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค€๋‹ค. - -``` -์ฒ˜๋ฆฌ A => ์ฒ˜๋ฆฌ B => ์ฒ˜๋ฆฌ C(์—๋Ÿฌ ๋ฐœ์ƒ) ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๊ธฐ ๊นŒ์ง€์˜ ํ๋ฆ„ => ์ฒ˜๋ฆฌ D -``` - -#### 2) ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ž€? - -> ํ”„๋กœ๊ทธ๋žจ ๋‚ด ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์ˆœ์„œ๋กœ ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ‘œ์‹œํ•˜๋Š” ์ด๋ ฅ ์ •๋ณด - -* ํŠธ๋ ˆ์ด์Šค(trace) : ์ž์ทจ, ๊ธฐ๋ก -* ์Šคํƒ(stack) : ์Œ“์ด๋Š” ๊ฒƒ - -\ -์›๋ž˜ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์Šคํƒ์— ์Œ“์ธ ๊ฒƒ๋“ค์„ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋ฐ˜๋Œ€๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.\ -ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์ž์— ์Œ“์ด๋“ฏ ์ˆœ์„œ๋Œ€๋กœ ์Šคํƒ์— ์Œ“์ธ๋‹ค. ์ด๊ฒƒ์„ ๊บผ๋‚ด์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒŒ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค - -> ์ฆ‰, ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ ๋œ ๊ฒƒ์ด ์Šคํƒ ํŠธ๋ ˆ์ด์Šค ๊ฐ€์žฅ ์œ—์ค„์— ํ‘œ์‹œ ๋œ ๋‹ค๋Š” ๊ฒƒ!(ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ ๋ณดํ†ต ์ž๋ฐ”๋ž‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ทธ๋Ÿผ) - -#### 3) ์Šคํƒ ํŠธ๋ ˆ์ด์Šค์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ - -``` - ย  ย  ย < meta charset="UTF-8" /> ย  ย Sainple ย  ย 

Stack trace

ย  -``` - -\ -์Šคํƒ ํŠธ๋ ˆ์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์—๋Š” ์ตœ์ข…์ ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์žฅ์†Œ์ธ ํ•จ์ˆ˜ f3์˜ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.\ -sample.html:19:21 ์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํŒŒ์ผ๋ช…๊ณผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜์˜ ํ–‰๊ณผ ์—ด์˜ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œ - -#### 4) ๋จผ์ € ์ตœ์ข… ์ง€์ ์„ ํ™•์ธํ•˜์ž. - -> ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ์ตœ์ข… ์ง€์ ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋จผ์ € ํ•ด๋‹น ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค. - -\ -๋Œ€๋ถ€๋ถ„์˜ ์—๋””ํ„ฐ์—๋Š” ํ–‰๊ณผ ๋ฌธ์ž์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜๋กœ ์ ํ”„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ ํŠธ๋ ˆ์ด์Šค์— ๋‚˜์™€ ์žˆ๋Š” ํ–‰๊ณผ ๋ฒˆ์งธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฐพ๊ธฐ๊ฐ€ ํŽธํ•˜๋ฉฐ, ์ž‘์—…์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.\ -์ฐธ๊ณ ๋กœ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ฌธ์ž๋ฅผ ์…€ ๋•Œ ๊ณต๋ฐฑ๋„ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ธ์‹\ - - -> ๋ชจ๋“  ํ–‰์„ ์ฝ์œผ๋ ค๊ณ  ํ•˜์ง€ ๋ง๊ณ , ์ตœ์ข… ์ง€์ ์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ์ฝ์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### 5) ์ตœ์ข… ์ง€์ ๋งŒ์œผ๋กœ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์„ ๋•Œ - -``` -function hello(user) { ย console.log(`์•ˆ๋…•ํ•˜์„ธ์š” ${user.nickname} ๋‹˜');} -hello(userl);hello(user2); โ€”1 ์—๋Ÿฌ์˜ ์›์ธ์ด ๋˜๋Š” ์œ„์น˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ ์กด์žฌhello(user3); -``` - -์—๋Ÿฌ์˜ ์›์ธ - -``` -Uncaught TypeError: Cannot read properties of null (reading `nickname`) ย at hello (sample.html: 15:35) ย at sample.html:20:7 -``` - -์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” hello ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋Š” ์ธ์ˆ˜์ธ user๊ฐ€ null์ด ๋˜๋Š” ๊ฒƒ์— ๋Œ€์ฒ˜ํ•ด์•ผ ํ•œ๋‹ค.\ -์ฆ‰, ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ๋ชจ๋ฅด๋ฉด useri, user2, user3์„ ๋ชจ๋‘ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.\ -๊ทธ๋Ÿฌ๋‚˜, ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ์—๋Ÿฌ์˜ ์›์ธ์ด ๋˜๋Š” ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‘ ๋ฒˆ์งธ ํ–‰์„ ์‚ดํŽด๋ณด๋ฉด 20:7์ด ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์ด ์œ„์น˜์—์„œ ํ˜ธ์ถœํ•˜๋Š” hello ํ•จ์ˆ˜๊ฐ€ ์›์ธ์ด ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.\ - - -> ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด ํšจ์œจ์ ์œผ๋กœ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. - - - -### 4. ์Šคํƒ ํŠธ๋ ˆ์ด์Šค์˜ ํ๋ฆ„์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฅผ๊นŒ? - -๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๊ฐ€ ์•„๋ž˜๋ถ€ํ„ฐ ์œ„๋กœ ์ด๋™ํ•œ๋‹ค ๋”ฐ๋ผ์„œ ์ œ์ผ ์œ„์ชฝ์„ ๋ณด๋ฉด ์—๋Ÿฌ์˜ ์œ„์น˜๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ด์ฌ์€ ์ด์™€ ๋ฐ˜๋Œ€๋กœ ์ค„๋ ฅํ•œ๋‹ค. ํŒŒ์ด์ฌ์—์„œ ์—๋Ÿฌ์˜ ์›์ธ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํƒ ํŠธ๋ ˆ ์ด์Šค์˜ ๊ฐ€์žฅ ์•„๋ž˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค\ diff --git a/developLog/book/learn-errors/3.md b/developLog/book/learn-errors/3.md deleted file mode 100644 index c034e49..0000000 --- a/developLog/book/learn-errors/3.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: ๋””๋ฒ„๊น…์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ์ž. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํšจ์œจ์ ์œผ๋กœ ์—๋Ÿฌ์˜ ์›์ธ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ• ---- - -# 3์žฅ ํšจ์œจ์ ์œผ๋กœ ์—๋Ÿฌ์˜ ์›์ธ ์ฐพ๊ธฐ - -๋””๋ฒ„๊น…์ด๋ž€ ์—๋Ÿฌ์˜ ์›์ธ์„ ํŠน์ •ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ์•ž ์žฅ์—์„œ ๋‚˜์˜จ ์—๋Ÿฌ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋„ ๋””๋ฒ„๊น…์˜ ํ•œ ๊ฐ€์ง€๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. - -## 01. ๋””๋ฒ„๊น…์ด๋ž€? - -> ๋””๋ฒ„๊น…(debugging)์ด๋ž€ ์—๋Ÿฌ์˜ ์‹ค์ œ ์›์ธ์„ ์ฐพ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค. ๋””๋ฒ„๊น… ์Šคํ‚ฌ์€ ํšจ์œจ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ํฐ ์˜ํ–ฅ์„ ์ค€๋‹ค. - -\ -๋””๋ฒ„๊ทธ(debug) =ํ”„๋กœ๊ทธ๋žจ ๋‚ด ์—๋Ÿฌ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ฒ„๊ทธ(bug) + de(์ œ๊ฑฐํ•˜๋‹ค) - -### 1) ๋””๋ฒ„๊น…์˜ ํ๋ฆ„ - -์›์ธ ์ฐพ๊ธฐ โ†’ ์—๋Ÿฌ ์ฝ๊ธฐ โ†’ ์›์ธ ํŒŒ์•… โ†’ ์ˆ˜์ •ํ•˜๊ธฐ โ†’ ? โ†’ ์›์ธ ํŒŒ์•… โ†’ ์ˆ˜์ •ํ•˜๊ธฐ\ - - -> ๊ณผ์žฅํ•ด์„œ ํ‘œํ˜„ํ•˜์ž๋ฉด ๋””๋ฒ„๊น…์€ ์—๋Ÿฌ์˜ ์›์ธ๋งŒ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ๋๋‚œ ๊ฒƒ์ด๋‚˜ ๋‹ค๋ฆ„์—†๋‹ค. - -\ -์—๋Ÿฌ๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ฑฐ๋‚˜ ์—๋Ÿฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์„ ๋•Œ๋„ ์žˆ๋‹ค. ์ด๋•Œ๋Š” ํ”„๋ฆฐํŠธ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•๊ณผ ์ด์ง„ ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜์—ฌ ์—๋Ÿฌ์˜ ์›์ธ์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. - -### 2) ํ”„๋ฆฐํŠธ ๋””๋ฒ„๊น…์„ ํ•ด๋ณด์ž - -> ํ”„๋ฆฐํŠธ ๋””๋ฒ„๊น…์˜ ํ”„๋ฆฐํŠธ๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถœ๋ ฅ(print)ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ๋””๋ฒ„๊น… ์ค‘ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. - -\ -๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด ์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ•ด์„ํ•˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜ ํŠน์ • ๊ฐ€๋Šฅํ•˜๋‹ค. - -``` -function calcSum(a, b) {console.log('์ธ์ˆ˜์˜ ๊ฐ’ : a = ${a} / b = ${b}');const sum = a + b;console.log๏ผˆ'์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ : sum = ${suin}'๏ผ‰;return sum;const sum = calcSumO, 2๏ผ‰;console.log๏ผˆ'ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’ : ${sum}'๏ผ‰; -``` - -> ํŠน์ • ์œ„์น˜์˜ ๋ณ€์ˆซ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํ”„๋ฆฐํŠธ ๋””๋ฒ„๊น…์˜ ๊ธฐ๋ณธ - diff --git a/developLog/book/mzdevlop.md b/developLog/book/mzdevlop.md deleted file mode 100644 index 7da57f1..0000000 --- a/developLog/book/mzdevlop.md +++ /dev/null @@ -1,422 +0,0 @@ ---- -description: ์š”์ฆ˜ ๊ฐœ๋ฐœ์ž ์ฑ…์„ ์ฝ๊ณ  ์ ์€ ํ›„๊ธฐ์™€ ์ปคํ”ผ์ฑ— ํ›„๊ธฐ -icon: book-open -cover: >- - https://velog.velcdn.com/images/prettylee620/post/2b599a91-49bb-4594-b765-e80acf5a06b9/image.png -coverY: 0 ---- - -# ์š”์ฆ˜ ๊ฐœ๋ฐœ์ž ์š”์•ฝ ๋ฐ ์‹ ์ž… ๊ฐœ๋ฐœ์ž์˜ ๋ฐฉํ–ฅ์„ฑ ์ฐพ๊ธฐ(feat. ์ปคํ”ผ์ฑ—) - -

์š”์ฆ˜ ๊ฐœ๋ฐœ์ž ์ฑ…

- -## 1์žฅ ์ด๋Ÿฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์–ด - -![](https://velog.velcdn.com/images/prettylee620/post/e6e104c1-fbf8-4f33-b23e-713993d17faa/image.png) - -> **์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์™œ ๊ทธ๋Ÿฐ๊ฐ€**๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์ง€๊ณ  ๊ณ ๋ฏผํ•ด์•ผ ํ•œ๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ๋ชจ์Šต ๊ตฌ์ฒด์ ์ธ ๋ชจ์Šต์ด ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋จผ์ € ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค๋‚˜ ํšŒ์‚ฌ๋ฅผ ๋– ์˜ฌ๋ ค๋ณด์ž..! - -### 1. ํšŒ์‚ฌ๊ฐ€ ์ •์˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž - -์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€๋ฅผ ๋ณด๋ฉฐ, ์„ธ์ƒ์—์„œ ์ •์˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ๋ชจ์Šต์ด ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œํ•ด๊ฒฐ์‚ฌ๋ผ๋ฉด ํšŒ์‚ฌ๊ฐ€ ์ •์˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” **ํŠน์ • ๋ฌธ์ œ๋ฅผ ํšŒ์‚ฌ๋งŒ์˜ ๋ฐฉ์‹์œผ๋กœ ํƒ์›”ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œํ•ด๊ฒฐ์‚ฌ** - -### 2. ๋‚ด๊ฐ€ ์ •์˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž - -๊ฐ™์€ ๊ฐœ๋ฐœ์ž์—ฌ๋„ ๋ชจ๋‘ ๋‹ค๋ฅธ ์ปค๋ฆฌ์–ด๋ฅผ ์Œ“์œผ๋ฉด์„œ ๊ทธ ๊ณผ์ •์—์„œ **์ž์‹ ๋งŒ์˜ ์žฅ์ ์ด ๋…น์•„๋“  ๊ธธ์„ ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ•จ** - -> ์ฆ‰, ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์–ด๋–ค ๊ฐ€์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€์ง€ ๊ณ ๋ฏผํ•˜๋ฉฐ ์ •์˜ - -![](https://velog.velcdn.com/images/prettylee620/post/cef83f7f-3198-4f85-bde9-6ee75ba3c30c/image.png) - -#### 1) ์ข‹์€ ๊ฐœ๋ฐœ์ž์˜ ๋•๋ชฉ + ์ž˜ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ ์ƒ๊ฐ - -์ข‹์€ ๊ฐœ๋ฐœ์ž์˜ ๋•๋ชฉ์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉฐ ๋™์‹œ์— ๋‚ด๊ฐ€ ์ž˜ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. - -* ์˜ˆ์‹œ๋กœ ๋ฌธ์ œ ์ •์˜, ๋ฌธ์ œ ํ•ด๊ฒฐ, ํ•ด๊ฒฐ๋ฐฉ์•ˆ ๊ณต์œ ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ•จ๊ป˜ ๋ฐ๊ฒŒ ๋‚˜๋‹ต๊ฒŒ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ต์œกํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฐœ๋ฐœ์ž - -ํ•œ ๋ฒˆ์— ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ `๊พธ์ค€ํžˆ ์žฌ์ •์˜`์˜ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•จ - -#### 2) ๋‚ด ํ˜ธ๊ธฐ์‹ฌ์„ ์ž๊ทนํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€ - -> ๋‚˜์™€ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ๊ฐœ๋ฐœ์ž๋ณด๋‹ค๋Š” ์–ด๋–ค ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๊ณ  ์‹ถ์€์ง€ ์งˆ๋ฌธํ•˜๋ฉฐ ์ ‘๊ทผ - -๋„ˆ๋ฌด ๋งŽ๋‹ค๋ฉด ์ž์‹ ์ด ์–ด๋–ค ๋ถ€๋ถ„์— ๊ฐ€์žฅ ๋งŽ๋Š” ๋ˆ์„ ์“ฐ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ์‹คํŒจํ•œ ๊ฒฝํ—˜ ๋˜ํ•œ ๊ณต์œ ํ•˜์ž. **ํšŒ์‚ฌ์˜ ๋ฌธํ™”์™€ ๋น„์ „์„ ์ดํ•ด**ํ•˜๋ฉด ํ•ด๋‹น ํšŒ์‚ฌ๊ฐ€ ์ž์‹ ์—๊ฒŒ ์ ํ•ฉํ•œ์ง€, ๊ทธ ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - -๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ž์‹ ์˜ ์ง„๋กœ์™€ ์ •์ฒด์„ฑ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚ด๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ๊ฐ€์น˜๋ฅผ ์ถ”๊ตฌํ•˜๊ณ  ๋‚ด๊ฐ€ ํ’€๊ณ  ์‹ถ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ์—…์„ ์ฐพ์ž. - -## 2์žฅ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•™์Šตํ•˜๊ณ  ์‹ถ์–ด - -![](https://velog.velcdn.com/images/prettylee620/post/8d8f598f-d9b2-4daf-84d0-a589ca8058c1/image.png) - -### 1. ์ถœ๋ฐœํ•˜๊ธฐ ์ „ ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ - -> ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•™์Šต์˜ ์‹œ์ž‘์€ ํ”ผ๋“œ๋ฐฑ๊ณผ ํšŒ๊ณ  - -![](https://velog.velcdn.com/images/prettylee620/post/4f903100-c517-4eac-9251-4792b595c837/image.png) - -์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์•ผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์น˜ ๊ฒฝํ—˜์น˜๋ฅผ ์–ป๊ณ  ์„ฑ์žฅํ•˜๋Š” ์†๋„๋ฅผ ๋ณด๋ฉฐ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ง€ - -์ฃผ๊ธฐ์ ์ธ ํšŒ๊ณ ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” **ํ”ผ๋“œ๋ฐฑ์„ ์ž˜ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ**์ด๋‹ค. - -### 2. ๊ฐœ์ธ์ด ํ•˜๋Š” ํšŒ๊ณ  - -* ๊ณต๋ถ€๋ฅผ ๋๋‚ธ ํ›„ **์–ด๋–ค ํ•™์Šต ๋ฐฉ๋ฒ•์ด ๋‚˜์—๊ฒŒ ์œ ์šฉํ–ˆ๋Š”์ง€ ์–ด๋–ค ๋‚ด์šฉ์„ ํ•™์Šต์‹œ ํž˜๋“ค์—ˆ๋Š”์ง€** ์ ์–ด๋ณด๋Š” ๊ฒƒ - -### 3. ํŒ€ ๋‹จ์œ„ ํšŒ๊ณ  - -* ์ •๊ธฐ์ ์ธ ํšŒ๊ณ ๋ฅผ ํ†ตํ•ด ์Šคํ„ฐ๋””๊ฐ€ ๋ชฉ์ ์„ ํ–ฅํ•ด ์ž˜ ๋‚˜์•„๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ๊ฐœ์„  ์—ฌ๋ถ€ ํ™•์ธ ๊ฐ€๋Šฅ - -### 4. ์–ด๋””์„œ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ - -#### 1) ๐Ÿ“• ์ฑ… : ์ฝ์ง€๋งŒ ๋ง๊ณ  ์ ์šฉํ•˜์ž - -![](https://velog.velcdn.com/images/prettylee620/post/2399c359-90a1-40ed-a67b-65728f078e9f/image.png) - -1. ์‚ดํŽด๋ณด๊ธฐ : ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ณ  ์–ด๋–ค ๋ถ€๋ถ„์„ ์ง‘์ค‘ํ•ด์„œ ์ฝ์„์ง€๋ฅผ ๊ฒฐ์ • -2. ์งˆ๋ฌธํ•˜๊ธฐ : ๊ฐ ์žฅ์ด๋‚˜ ์ ˆ์„ ์ฝ๊ธฐ ์ „์— ์Šค์Šค๋กœ ์งˆ๋ฌธํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ ๊ทน์ ์ธ ํ•™์Šต ํƒœ๋„ -3. ์ฝ๊ธฐ : ์•ž ์„œ ๋งŒ๋“  ์งˆ๋ฌธ๋“ค์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ์œผ๋ฉฐ ์‹ฌ๋„ ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ -4. ์š”์•ฝํ•˜๊ธฐ : ์ž์‹ ์˜ ๋ง๋กœ ์š”์•ฝํ•˜๊ณ  ์ค‘์š”ํ•œ ๊ฐœ๋… ์ •๋ฆฌ -5. ๋ณต์Šตํ•˜๊ธฐ : 2๋‹จ๊ณ„์— ๋งŒ๋“  ์งˆ๋ฌธ์— ๋Œœํ•œ ๋‹ตํ•˜๊ณ  ํ•™์Šตํ•œ ๋‚ด์šฉ ๋˜์งš์–ด๋ณด๊ธฐ - -#### 2) ๐Ÿ‘ฉโ€๐Ÿ’ป ์˜จ๋ผ์ธ ๊ฐ•์˜ : ๊ฐ•์‚ฌ ์ƒ๊ฐ๊ณผ ๋‚ด ์ƒ๊ฐ์˜ ์ฐจ์ด๋ฅผ ์ฐพ์ž - -![](https://velog.velcdn.com/images/prettylee620/post/218a3dbb-1abe-4c82-afec-9cec8de4f2cb/image.png) - -1. ๋ชฉ์ฐจ๋ณด๊ธฐ : ๋ฐฐ์šธ ๋‚ด์šฉ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ -2. ๋‚ด๊ฐ€ ์ƒ๊ฐ ํ•œ ๋‚ด์šฉ๊ณผ ๊ฐ•์‚ฌ์˜ ์ด์•ผ๊ธฐ ๋น„๊ต : ์™œ ๊ฐ™๊ณ  ๋‹ค๋ฅธ์ง€ ์ด์œ ๋ฅผ ํŒŒ์•…ํ•˜๋ฉฐ ์ง€์‹์„ ๋Šฅ๋™์  ํก์ˆ˜ -3. ๊ณผ๊ฑฐ์˜ ๊ฒฝํ—˜๊ณผ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ ๊ทน์  ์ ‘๋ชฉ : ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๊ทธ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฒฝํ—˜ ์ ๊ทน์  ๋ฐ˜์˜ - -> ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต์— ์žˆ์–ด ํ•˜๋‚˜์˜ ์ •๋‹ต์€ ์—†๋‹ค. **์ตœ์ ์˜ ํ•™์Šต ํ™˜๊ฒฝ์€ ์Šค์Šค๋กœ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค** - -#### 3) โ“ ์–ด๋–ค ๊ฒƒ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•ด์•ผ ํ• ๊นŒ - -ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณธ์งˆ์€ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๋ฏ€๋กœ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ• ์ง€ ๋จผ์ € ์ •์˜ํ•˜๊ณ  ๊ทธ ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ๋„๊ตฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š” => `ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ œ`์— ์ดˆ์ ์„ ๋งž์ถฐ ํ•™์Šต ๋ฐฉํ–ฅ์„ ์„ค์ • - -**Step 1 ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ฌธ์ œ์™€ ๋งฅ๋ฝ ์ฐพ๊ธฐ** - -ํ‰์†Œ ๊ด€์‹ฌ์„ ๊ฐ€์กŒ๋˜ ํšŒ์‚ฌ๋‚˜ ์„œ๋น„์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด์„œ ๋‚ด๊ฐ€ ์ •์˜ํ•œ ๊ฐœ๋ฐœ์ž์˜ ๋ชจ์Šต๊นŒ์ง€ ๊ณ ๋ฏผํ•œ๋‹ค๋ฉด ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์€ ๋” ์‰ฌ์›Œ์งˆ ๊ฒƒ - -**Step 2 ์‹ค๋ฌด์ž์—๊ฒŒ ์—ฐ๋ฝํ•˜๊ธฐ** - -> \*\* ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•\*\* - -* ์ธํ”„๋Ÿฐ ์ปคํ”ผ์ฑ— -* ์ปคํ”ผ์ฑ— ์•ฑ -* ํŠธ์œ„ํ„ฐ -* ๋งํฌ๋“œ์ธ -* ์˜คํ”ˆ ์นดํ†ก๋ฐฉ - -๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ญ๋Ÿ‰์„ ์‹ค๋ฌด์ž์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ฐพ์ž(๋งํฌ๋“œ์ธ ์ฝœ๋“œ๋ฉ”์ผ) - -**Step 3 ๊ฐ ํŒ€์—์„œ ์›ํ•˜๋Š” ์—ญ๋Ÿ‰ ์กฐ์‚ฌํ•˜๊ธฐ** - -์›ํ•˜๋Š” ์ง๊ตฐ๊ณผ ํšŒ์‚ฌ์—์„œ ์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์—ญ๋Ÿ‰ ํŒŒ์•…ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ฑ์žฅํ•˜๋Š” ์‚ฌ์ดํด ๋งŒ๋“ค๊ธฐ - -> * ํŒ€ ๋ฌธํ™”๋Š” ์–ด๋–ค์ง€ - -* ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”์ง€ -* pr ๋ฆฌ๋ทฐ๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”์ง€ -* ํ˜„์žฌ ํŒ€์—์„œ ๊ฐ€์žฅ ๋ชฉ๋ง๋ผํ•˜๋Š” ์—ญ๋Ÿ‰์€ ๋ฌด์—‡์ธ์ง€ - -> ์ฑ„์šฉ ๊ณต๊ณ ์— ์žˆ๋Š” ๋ชจ๋“  ์š”๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†๋‹ค. **์ฑ„์šฉ ๊ณต๊ณ ์—์„œ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ค‘์š”ํ•œ ์ง€ ํŒŒ์•…ํ•˜๊ณ  ์ฑ„์šด ํ›„ ๋‚˜๋จธ์ง€ ์—ญ๋Ÿ‰์€ ์–ด๋– ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ ์ง„์ ์œผ๋กœ ์„ฑ์žฅ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”** - -๋ฌธ์ œ ํ•ด๊ฒฐ์— ํ•„์š”ํ•œ ์—ญ๋Ÿ‰์„ ์ ๊ทน์ ์œผ๋กœ ์ฐพ์•„์„œ ํ•™์Šตํ•˜๋Š” ์‚ฌ์ดํด์„ ๋งŒ๋“ค์–ด์•ผ ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฒˆ์•„์›ƒ์ด ๋œ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ œ๋Œ€๋กœ ๋ชฉํ‘œ์— ๋‹ค๊ฐ€๊ฐ€๊ณ  ์žˆ๋Š”๊ฐ€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ์Šค์Šค๋กœ ํ•˜๊ธฐ - -#### 4) ๋ฌด์—‡๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ - -1. ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ์ž‘์€ ๋ฒ„์ „๋ถ€ํ„ฐ ๋งŒ๋“ค๊ธฐ : ํ•ต์‹ฌ ๊ธฐ๋Šฅ ํŒŒ์•… ๊ฐ€๋Šฅ - -* ํ™•์‹ค์„ฑ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์œผ๋ฉฐ `์ ์ง„์  ๋ฐœ์ „`์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ฆ‰ ๋‹ค ๊ตฌํ˜„์„ ๋ชปํ•˜๋”๋ผ๋„ ์–ธ์ œ๋‚˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ์—ฐ์Šต - -2. ์—ฐ๊ณ„ ๊ธฐ๋Šฅ ํ™•์žฅ -3. ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„ -4. ์Šคํƒ€์ผ ์ ์šฉ -5. ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ ์šฉ : ์–ด๋–ป๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ• ๊นŒ - -#### 5) ์งˆ๋ฌธ์„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•  ๊ฒƒ - -> ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•  ๋•Œ๋Š” ๋ชฉ์ ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ํ˜„์žฌ ์ƒํ™ฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉฐ ์„œ๋กœ ์ดํ•ดํ•œ ๋‚ด์šฉ์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • - -#### 6) ์Šคํ„ฐ๋‚ด ๋‚ด์—์„œ์˜ ํ”ผ๋“œ๋ฐฑ ์ „๋žต - -1. ๊ตฌ์ฒด์ ์ธ ๋ชฉํ‘œ ์„ค์ • - -> Ex. X์‹œ๊ฐ„ ์•ˆ์— y ๊ตฌํ˜„ํ•˜๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝ์œผ ๊ธฐ๋ณธ์„œ์—์„œ ๋ชจ๋ฅด๋Š” ๊ฐœ๋… ๋‹ค๋ฃฌ ์ฑ•ํ„ฐ 4๊ฐœ ํ•œ๋‹ฌ ๊ฐ„ ๊ณต๋ถ€ํ•œ ํ›„ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ํ•™์Šตํ•˜๊ธฐ - -2. ์ฃผ๊ธฐ์ ์ธ ๋ชฉ์  ํ™•์ธ ๋˜‘๋˜‘ํ•˜๊ฒŒ ์งˆ๋ฌธํ•˜๊ธฐ -3. ์„ฑ์˜ ์žˆ๊ฒŒ ์งˆ๋ฌธํ•˜๊ธฐ : ์‹œํ–‰์ฐฉ์˜ค ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋Ÿฌ๋ฒ„๋• ๋””๋ฒ„๊น…์ด๋ผํ•˜๋ฉฐ ์งˆ๋ฌธํ•˜๊ธฐ ์ „ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜๊ณ  ํ•ด๊ฒฐํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ• => ๋‹ต๋ณ€ํ•ด์ฃผ๋Š” ์‚ฌ๋žŒ ๋˜ํ•œ ๋ชจ๋“  ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช… ํ•ด ์ค„ ๊ฒƒ -4. ์Šคํƒ€์ผ๋ณด๋‹ค๋Š” ๊ตฌ์ฒด์ ์ธ ํ•ด๊ฒฐ๋ฐฉ์•ˆ ์งˆ๋ฌธํ•˜๊ธฐ ์ €๋Š” ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ ํ˜น์‹œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? -5. ์ดํ•ด ๋‚ด์šฉ ์‹ฑํฌ ๋งž์ถ”๊ธฐ - -#### 7) ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ - -![](https://velog.velcdn.com/images/prettylee620/post/8cb2e6f3-7206-46c8-a934-b12fc67d4069/image.png) - -> ์˜ค๋ฅ˜๋ฅผ ๋นจ๋ฆฌ ํƒ์ง€ํ•˜๋„ ๋ฒ„๊ทธ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ํŒ€์› ๊ฐ„์˜ ์‹ ๋ขฐ๊ฐ€ ๋†’์•„์ง€๋ฉฐ ๋” ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค. - -**๐Ÿ’ฅ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ์™€ ๋“œ๋ผ์ด๋ฒ„** - -* **๋“œ๋ผ์ด๋ฒ„** :ํ‚ค๋ณด๋“œ๋ฅผ ์ง์ ‘ ์žก๊ณ  ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑํ•˜๋Š” ์—ญํ•  -* **๋‚ด๋น„๊ฒŒ์ดํ„ฐ** : ๋‚ด๋น„๊ฒŒ์ด์…˜์ฒ˜๋Ÿผ ์ „์ฒด ์ง€๋„๋ฅผ ๋ณด๋ฉฐ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ œ๋Œ€๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ™•์ธํ•˜๋Š” ์—ญํ• , ๋ฒ„๊ทธ ํ™•์ธ - -**๐Ÿ’ฅ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฃผ์˜์ ** - -1. ํ•œ ์‚ฌ๋žŒ์ด ํ•œ ๊ฐ€์ง€ ์—ญํ• ์„ ์˜ค๋ž˜ ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. -2. ์ˆ˜ํ‰ ๊ด€๊ณ„ ์œ ์ง€ -3. ๋ฌธ์ œ์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ  ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•จ๊ป˜ ์ •๋ฆฌ -4. ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๊ทœ์น™์„ ์ •ํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ๋“ค๋ฉฐ, ํŽธํ•˜๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํšŒ๊ณ ๊นŒ์ง€ ํ•ด์ฃผ์ž. - -#### 8) ํšจ๊ณผ์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐฉ๋ฒ• - -1. ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ œ์˜ ์˜๋„ ๋“œ๋Ÿฌ๋‚ด๊ธฐ : ๋‚ด๊ฐ€ ๋จผ์ € ์ฝ”๋“œ๋ฅผ ๋ณต๊ธฐํ•˜๋‹ค๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ ๋ณต๊ธฐ ํ›„ ํ”ผ๋“œ๋ฐฑ ์š”์ฒญ -2. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์—์„œ ๋ฆฌ์•ก์…˜ํ•˜๊ธฐ\ - : ์งˆ๋ฌธ์„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•˜๋ฉฐ, ํ”ผ๋“œ๋ฐฑ ์ ๊ทน์  ๋ฐ˜์˜ -3. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ ํšŒ๊ณ ๋กœ ๋˜๋Œ์•„๋ณด๊ธฐ : ๋‚ด๊ฐ€ ๋‹ค์Œ์— ๋” ์ž˜ํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด๋‚˜ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋ถ€๋ถ„์— ์‚ดํŽด๋ณด๋Š” ๊ณผ์ •๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ - -**๐Ÿ’ฅ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ ๊ฒ€ํ† ํ•  ํ•ญ๋ชฉ** - -**1. ์ด ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๊ฐ€(ํŠนํžˆ ์ค‘์š”)** : ๋†“์นœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์—†๋Š”์ง€ ํ˜น์€ ์˜ˆ์ƒ ๋˜๋Š” ๋ฒ„๊ทธ๋Š” ์—†๋Š” ์ง€ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š” - -**2. ์ฝ”๋“œ ํ‘œ์ค€์„ ์ง€์ผฐ๋Š”์ง€** ์ฝ”๋”ฉ ํ‘œ์ค€์€ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ, ์ผ๊ด€์„ฑ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ, ๋ฒ„๊ทธ ์œ„ํ—˜ ๊ฐ์†Œ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ฒจ์ง - -**3. ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ์„ ํ™•์ธํ–ˆ๋Š”๊ฐ€** ํ˜„์žฌ ์ฝ”๋“œ๊ฐ€ ์ปดํ“จํ„ฐ์˜ ์ž์›์„ ํ•„์š” ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋””, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์ €ํ•˜๋˜๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๋Š” ์ผ์ด ์—†๋Š”์ง€ ๋“ฑ์„ ํŒ๋‹จํ•œ๋‹ค. - -**4. ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ์ทจ์•ฝํ•œ ๋ถ€๋ถ„์€ ์—†๋Š”๊ฐ€** - -**๐Ÿ’ฅ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ํ™•์ธ** - -> **์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ ์™„๋ฒฝํ•˜์ง€ ์•Š์•„๋„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”**ํ•˜๋ฉฐ, ์‹œ๊ฐ„ ์ œํ•œ์„ ์ •ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค๊ณ  ํ•จ - -๋‹จ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ๊ตฌ์ฒด์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์งˆ๋ฌธํ•˜๋ฉฐ ๋˜‘๋˜‘ํ•˜๊ฒŒ ์š”์ฒญํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋‚ด ์˜๋„์™€ ํ”ผ๋“œ๋ฐฑ ๋ฐ›๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์„ ์ž์„ธํžˆ ๋‚จ๊ฒจ์•ผ ํ•จ - -#### 9) ์ฑ— ์ง€ํ”ผํ‹ฐ๋กœ ํ•™์Šต๋ฒ• - -1. ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋ฒ„์ „๋ถ€ํ„ฐ ๋ฌผ์–ด๋ณด๊ธฐ : ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณธ์งˆ์€ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๋ฏ€๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋ฉด ํ•™์Šต ํšจ๊ณผ๊ฐ€ ๋” ํฌ๋‹ค -2. ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ๋ฆฌ๋ทฐ ์š”์ฒญํ•˜๊ธฐ : ์ฑ—์ง€ํ”ผํ‹ฐ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ธ์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ฑ๋ช…๋ผ๋„ ๊ฐœ์„  ๊ฐ€๋Šฅํ•œ ๋ฌธ์˜(๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ) - -> * ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ด ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? - -* ์ด ์ฝ”๋“œ์˜ ๋ณด์•ˆ ์œ„ํ—˜ ์š”์†Œ๊ฐ€ ์žˆ๋‚˜์š”? - -3. ๋ฐฉํ–ฅ์„ฑ๊ณผ ์˜ˆ์‹œ ์š”์ฒญํ•˜๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ์–ด๋ ค์›€์„ ๋Š๋‚€๋‹ค๋ฉด ์ง€๊ธˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฒƒ์ฃผํ„ฐ ์‹œ๋„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๊ฒ€์ƒ‰๊ณผ ํ•™์Šต์„ ํ†ตํ•ด ๋‚ด์šฉ์„ ๊ฒ€์ฆํ•˜๋ฉฐ ๊ฐ•๋ ฅํ•œ ํ”ผ๋“œ๋ฐฑ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. - -## 4์žฅ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ์–ด - -> 3์žฅ์€ ์ด๋ ฅ์„œ ๊ด€๋ จ์ด๋ผ ์ฝ๊ธฐ๋งŒ ํ•˜๊ณ  ์ •๋ฆฌ๋Š” no no - -### 1. ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด - -> ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์— ์ฐธ์—ฌํ•˜๋ฉฐ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ - -**๋ชฉํ‘œ, ๊ธฐ๊ฐ„, ๊ทœ์น™ ์ •ํ•˜๊ธฐ** - -
- -๋ชฉํ‘œ ์„ค์ • - -* ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š” -* ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ 10๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ์Šตํ•˜๊ธฐ - -๊ธฐ๊ฐ„ ์„ค์ • - -* ํ•œ ๋‹ฌ ์ด๋‚ด๋กœ ์งง๊ฒŒ ์„ค์ •ํ•ด์„œ ์ž‘์€ ์„ฑ๊ณต ๋น ๋ฅด๊ฒŒ ๋ง›๋ณด๊ธฐ -* ๋ฐ”์  ๋•Œ๋Š” ์ž ์‹œ ๋ฉˆ์ถฐ๊ฐ€๊ธฐ - -๊ทœ์น™ ์„ค์ • - -* ์Šคํ„ฐ๋”” ์‹œ๊ฐ„์— ๋Šฆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด 10๋ถ„ ์ „๊นŒ์ง€ ๋ฉ”์„ธ์ง€ ๊ณต์œ ํ•˜๊ธฐ ์ฒ˜๋Ÿผ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค์ • -* ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ทœ์น™ 2-3์ง€ - -### 2. ํ™˜๊ฒฝ์„ ์ž˜ ์šด์˜ํ•˜๊ธฐ - -1. ๋ชจ๋“  ๊ตฌ์„ฑ์›์˜ ๋Šฅ๋™์  ์ฐธ์—ฌ -2. ์ค‘๊ฐ„ ํšŒ๊ณ  - -#### 1) ์˜๋ฏธ ์žˆ๊ฒŒ ๋งˆ๋ฌด๋ฆฌ - -๊ฐœ๋…์„ ์ ์šฉํ•˜๊ณ  ํ•จ๊ป˜ ํ•™์Šตํ•œ ๋‚ด์šฉ์œผ๋กœ ๊ฐ์ž ์–ด๋–ค ๊ฒฝํ—˜์œผ๋กœ ๊ฐœ์ฒ™ํ•ด๋‚˜๊ฐ€๋Š”์ง€ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์ด๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ ๋ฐ›๋Š” ํ™˜๊ฒฝ ๊ฐœ์ฒ™ - -#### 2) ํšŒ์‚ฌ์—์„œ ๋‚˜ ํ˜ผ์ž๋ผ๋ฉด - -์Šค์Šค๋กœ ๋งŒ๋“œ๋Š” ํ™˜๊ฒฝ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๊ฐœ๋ฐœ ์ค‘์— ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•ด์•ผ ํ•œ๋‹ค. - -#### 3) ํ˜ผ์ž์ธ ์ƒํ™ฉ์—์„œ๋„ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๋ฐฉ๋ฒ• - -1. ํšŒ์‚ฌ ๋‚ด ๋™๋ฃŒ ๋งŒ๋“ค๊ธฐ : ๋‹ค๋ฅธ ํŒ€์— ํ˜ผ์žํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ฐพ์•„๋ณด์ž -2. ์™ธ๋ถ€ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ : ๋‚ด๋ถ€์—์„œ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ์™ธ๋ถ€์—์„œ ์Šคํ„ฐ๋””๋‚˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ํ•จ๊ป˜ ์„ฑ์žฅํ•  ๋™๋ฃŒ ์ฐพ๊ธฐ -3. ๋‹ค๋ฅธ ์ง๊ตฐ์˜ ๋™๋ฃŒ์™€ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ธฐ ํ˜ผ์ž๋ผ๊ณ  ๋Š๊ปด์ง€๊ฑฐ๋‚˜ ์ถฉ๋ถ„ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋‚„ ๋•Œ, ๋ฐ”๋กœ ๊ทธ๋•Œ๊ฐ€ ์ƒˆ๋กœ์šด ๋„์ „์„ ์‹œ์ž‘ํ•  ์ตœ์ ์˜ ๊ธฐํšŒ ์ข‹์€ ํŒ€์›์ด ๋˜๊ณ  ์‹ถ๋‹ค๋ฉด : ๋ฉ”์‹ ์ €์™€ ํšŒ์˜ํŽธ - -> ํ˜‘์—…์˜ ํ•ต์‹ฌ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ - -## 6์žฅ ๋‚˜ ์˜ค๋Š˜๋„ ์ž˜ํ•˜๊ณ  ์žˆ์–ด - -> 5์žฅ์˜ ๊ฒฝ์šฐ ์ด์ง ๊ด€๋ จ๋œ ์ด์•ผ๊ธฐ๋กœ ์ฝ๊ณ  ์š”์•ฝ์€ ํ•˜์ง€ ์•Š์•˜๋‹ค! - -### 1. ์„ฑ์žฅ๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฐฉํ–ฅ์„ฑ - -> ์–ด๋–ค ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€๊ฐ€๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฑด **์–ด๋–ค ๊ฐœ๋ฐœ์ž๋กœ ์‚ด์•„๊ฐ€๊ณ  ์‹ถ์€๊ฐ€**์ด๋‹ค. - -#### 1) ์š•๊ตฌ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ 3๊ฐ€์ง€๋ฅผ ๊ณจ๋ผ๋ณด์ž - -![](https://velog.velcdn.com/images/prettylee620/post/304e7e30-132e-4855-a27a-3971530e5b76/image.png) - -์œ„์˜ ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ ํ•œ๊ตญ๋น„ํญ๋ ฅ๋Œ€ํ™”๊ต์œก์›์—์„œ ์ œ๊ณตํ•œ ์š•๊ตฌ๋ชฉ๋ก์œผ๋กœ ์š•๊ตฌ๋ชฉ๋ก ์ค‘ **์ž์‹ ์ด ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ํ‚ค์›Œ๋“œ๋ฅผ 3๊ฐ€์ง€**๋ฅผ ๊ณ ๋ฅธ๋‹ค. - -๋‚˜์˜ ๊ฒฝ์šฐ 3๊ฐ€์ง€๋กœ ์ถ”๋ฆฌ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด 4๊ฐ€์ง€ ๊ณจ๋ž๋‹ค ใ…‹ใ…‹ใ…‹ - -> * ์‹ ์ฒด์  ์ƒ์กด - -* ์‚ฌํšŒ์ /์ •์„œ์  ์ƒํ˜ธ์ž‘์šฉ -* ๋†€์ด/์žฌ๋ฏธ -* ์ž๊ธฐ ๊ตฌํ˜„ - -๊ทธ ๋‹ค์Œ ๊ทธ๊ฒƒ์— ๋ฐ‘์— ์žˆ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ 1์ฐจ๋กœ ๋ฝ‘๊ณ  ๊ทธ ์ค‘ 3๊ฐ€์ง€๋ฅผ ๋ฝ‘๋Š”๋‹ค. - -> * 1์ฐจ๋กœ ๋ฝ‘์€ ํ‚ค์›Œ๋“œ : ํœด์‹, ์•ˆ์ „, ์นœ๋ฐ€ํ•œ ๊ด€๊ณ„, ๋ฐฐ๋ ค, ํ˜‘๋ ฅ, ์ฆ๊ฑฐ์›€, ์„ฑ์žฅ, ์ฐฝ์กฐ์„ฑ - -* 2์ฐจ๋กœ ๋ฝ‘์€ ํ‚ค์›Œ๋“œ : ํ˜‘๋ ฅ, ์„ฑ์žฅ, ์ฆ๊ฑฐ์›€, ํœด์‹ - -#### 2) ๋‚ด๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๋ž€.. - -์œ„์˜ ํ‚ค์›Œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด๋ฉด - -> ๋‚˜๋Š” ์„ฑ์žฅ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉฐ, ์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฆ๊ฑฐ์›€์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ˜‘๋ ฅํ•˜๋ฉฐ(= ๊ณต์œ ํ•˜๋ฉฐ) 1๋ช…์—๊ฒŒ๋ผ๋„ ๋„์›€์„ ์ฃผ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์œผ๋ฉด ์ ๋‹นํ•œ ํœด์‹์€ ํ•„์š”ํ•˜๋‹ค. - -#### 3) ๋‚ด๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๋ฅผ ์•Œ์•˜๋‹ค๋ฉด ์ž‘์€ ์„ฑ๊ณต๋“ค ๋งŒ๋“ค์–ด๊ฐ€๊ธฐ - -์–ด์จ‹๋“  ์„ฑ์žฅ์€ ์žฅ๊ธฐ์ „์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋‹ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ **๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋‹ฌ๋ฆฌ๊ณ  ์žˆ๋Š”๊ฐ€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.** - -์ฆ‰, ์ž‘์€ ์„ฑ๊ณต๋“ค๋กœ ์ฒœ์ฒœํžˆ ์ฑ„์›Œ๊ฐ€๋ฉฐ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ„๋‹ค๋ฉด ์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. - -## ๐Ÿค” ์ฑ…์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ๊ณผ ๋ฐฉํ–ฅ์„ฑ - -### 1. ์›ํ•˜๋Š” ํšŒ์‚ฌ ์ตœ์„ ์€ ์•ˆ๋˜๋”๋ผ๋„ ์ฐจ์„ ์€ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. - -ํšŒ์‚ฌ๋ฅผ ๋‹ค๋‹Œ ์ง€๋Š” 2์ฃผ ์กฐ๊ธˆ ๋„˜์—ˆ์ง€๋งŒ ์ž์‹ ์ด ์›ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ํšŒ์‚ฌ์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ณณ์€ ๊ทนํžˆ ์ผ๋ถ€ ์ผ ๊ฒƒ ๊ฐ™๋‹ค๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ์ž์‹ ์ด ์›ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ์— ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ž์‹ ์˜ ์˜๊ฒฌ์„ ํ”ผ๋ ฅํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ **ํšŒ์‚ฌ์—๋„ ๊ทœ์น™์ด ์žˆ๊ธฐ์— ํšŒ์‚ฌ์—์„œ ๋งํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ทธ ํšŒ์‚ฌ์˜ ๊ทœ์น™์— ๋ฐฉ์‹์— ๋งž๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž๊ฒ ์ง€..** - -> ํšŒ์‚ฌ๋กœ ์„ฑ์žฅ๋„ ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ\*\* ํšŒ์‚ฌ๋ž‘ ๊ฐœ์ธ์„ ์กฐ๊ธˆ ๋ถ„๋ฆฌํ•ด์„œ ๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค\*\*๋ผ๋Š” ์ƒ๊ฐ๋„ ๋“ ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ํšŒ์‚ฌ์—์„œ ๋ณด๋‚ด๋Š” ๊ฒƒ๋งŒํผ ์ž์‹ ์ด ์‹ซ์–ดํ•˜๋Š” ๋ถ„์•ผ๋ฅผ ๊ฐ€๋ฉด ๊ทธ ์‹œ๊ฐ„์ด ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒ ์ง€..(ํ‡ด์‚ฌ์˜ ๊ธธ๋กœ..) - -![](https://velog.velcdn.com/images/prettylee620/post/6feecb3b-fa1f-408a-ba2d-54cd485f6307/image.png) - -๋ฌผ๋ก  ์ผ ์ ์œผ๋กœ ๋ณ€ํ•˜๋ฉด ์ž์‹ ์ด ์ข‹์•„ํ•˜๋Š” ๋ถ„์•ผ๋„ ์‹ซ์–ดํ•˜๊ฒŒ ๋œ๋‹ค๊ณ ๋Š” ํ•˜๋‚˜ ํฅ๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ๊ณผ ์•„์˜ˆ ์—†๋Š” ๊ฒƒ์€ ๋‹ค๋ฅผ ๋“ฏํ•˜๋‹คใ…‹ใ…‹ใ…‹ - -์•„ ๊ทธ๋ฆฌ๊ณ  ๋ค์œผ๋กœ ๋ฟŒ๋“ฏํ•จ์ด ์žˆ๋‹ค๋ฉด ์ข‹์„ ์ˆ˜๋„..(์‰ฝ์ง€ ์•Š๊ฒ ์ง˜ใ…‹ใ…‹) **๋‚˜๋ฆ„ ์ผ์„ ์ œ๋Œ€๋กœ ์‹œ์ž‘ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ต์œก์ชฝ์ด๋ผ ์ผํ•˜๋ฉด์„œ ๋ฟŒ๋“ฏํ•จ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์„๋“ฏ** - -
- -๊ทธ๋ฆฌ๊ณ  ์ž์‹ ์ด ๋ญ๊ฐ€ ์ค‘์š”ํ•œ์ง€ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•  ๋“ฏํ•˜๋‹ค. ์›Œ๋ผ๋ฒจ vs ๋ˆ์ด๋ƒ ๋ฌผ๋ก  ์ง€๊ธˆ ์ทจ์—…์‹œ์žฅ ์ƒํƒœ๋Š” ๊ณ ๋ฅด๋Š” ๊ฒƒ๋„ ํž˜๋“ค ์ •๋„๋กœ ๊ฐ‘์ž๊ธฐ ํ‡ดํ™”๋์ง€๋งŒ...**(๋ฌผ๋ก  ์—ฐ๋ด‰๋„ ํ•ฉ๊ฒฉ์ „์— ์•ˆ์•Œ๋ ค์ฃผ๋Š” ๊ณณ์ด ๋‹ค์ˆ˜์ง€๋งŒ.. ์žกํ”Œ๋ž˜๋‹›์„ ๋ณด๋ฉด ๋Œ€์ถœ ์•Œ ์ˆ˜ ์žˆ์Œ)** - -ํšŒ์‚ฌ์˜ ๊ฐ€์žฅ ์ข‹์€ ์ ์€ ์›Œ๋ผ๋ฒจ๊ณผ ์‚ฌ๋žŒ์ด ์ข‹๋‹ค๋Š” ๊ฒƒ.. - -> ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋กœ๋Š” **์‹ ์ž…๋•Œ๋Š” si์˜ ๊ฒฝ์šฐ ์›Œ๋ผ๋ฒจ์ด ์ข‹์•„์•ผ ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ..?๋ผ๊ณ  ๋‚˜๋Š” ์ƒ๊ฐํ•œ๋‹ค.** ๊ทธ๋ฆฌ๊ณ  ํฌ๊ด„๋กœ ์•ผ๊ทผํ•ด๋„ ๋ˆ๋„ ํœด๊ฐ€๋„ ์•ˆ์ฃผ๋Š” ๊ณณ์ด ๋‹ค์ˆ˜๋ผ...ใ…‹..ใ…œ - -### 2. si, sm์„ ๊ฐ„๋‹ค๋ฉด ํšŒ์‚ฌ์˜ ๋งˆ์ธ๋“œ๋‚˜ ์žกํ”Œ๋ž˜๋‹›์„ ๋ณด๋ฉด ํšŒ์‚ฌ์˜ ๋ฌธํ™”๋ฅผ ์•Œ ์ˆ˜๋„.. - -์ผ๋‹จ ๋‚ด๊ฐ€ ์ทจ์—…ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ์ชฝ๋„ ๊ฒŒ์ž„๊ฐœ๋ฐœ์ด์—ˆ์Œ ํ•˜์ง€๋งŒ ์‹ ์ž…์ธ ์ง€๊ธˆ ์ทจ์—…์€ ํ˜„์‹ค๊ณผ๋„ ์–ด๋Š์ •๋„ ํƒ€ํ˜‘ํ•จ.. - -๊ทธ ์ด์œ ๋กœ - -* ์ฒซ ๋ฒˆ ์งธ๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์€ ์‹ ์ž… ๊ฐœ๋ฐœ์ž๋ฅผ ์ž˜ ์•ˆ ๋ฝ‘์Œ -* ๋‘ ๋ฒˆ ์งธ๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ํ•ด ๋ณธ ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์œ ๋‹ˆํ‹ฐ ๋ฟ.. -* ์„ธ ๋ฒˆ์งธ๋Š” ์ข‹์ง€ ์•Š์€ ๊ฒŒ์ž„ ์‹œ์žฅ\*\*(์š”์ฆ˜ nc๋„ ์žํšŒ์‚ฌ ์ •๋ฆฌํ•˜๊ณ  ์ˆ˜์ต ๋‚ด๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‚˜๋ด„)\*\* -* ๋„ค ๋ฒˆ์งธ ์†Œ๋ฌธ์— ์ข‹์ง€ ์•Š์€ ์›Œ๋ผ๋ฒจ..**(์ง€์ธ๊ณผ ์ผ๋ณธ๊ฒŒ์ž„๊ฐœ๋ฐœ์ž๋ฅผ ๋ณธ ์  ์žˆ๋Š”๋ฐ ์•ผ๊ทผ..๋ฐค์ƒ˜์ด ์ง„์งœ...๐Ÿฅฒ)** - -๋‚ด๊ฐ€ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑด ๋‚ด๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒŒ์ž„์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š” ์ง€ ๊ถ๊ธˆํ•ด์„œ๊ฐ€ ํฌ๋‹ค. ์ผ๋‹จ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ง€์‹์ด ์ ์œผ๋‹ˆ ๊ทธ๊ฒƒ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๊ณ  ์ƒ๊ฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. - -๊ทธ๋ฆฌ๊ณ  - -> **ํšŒ์‚ฌ์˜ ๋ฌธํ™”์™€ ๋น„์ „์„ ์ดํ•ด**ํ•˜๋ฉด ํ•ด๋‹น ํšŒ์‚ฌ๊ฐ€ ์ž์‹ ์—๊ฒŒ ์ ํ•ฉํ•œ์ง€, ๊ทธ ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - -si, sm๋Š” ๋Œ€๋ถ€๋ถ„ ๊ทธ์ € ๊ณ ๊ฐ์‚ฌ์— ๋งž์ถ”๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ์— ํšŒ์‚ฌ์˜ ๋งˆ์ธ๋“œ..?๊ฐ€ ์ข‹์€์ง€๋ฅผ ๋ณด๋ฉด ์ข‹์„ ์ˆ˜๋„ - -### 3. ๋ˆ„๊ตฌ๋‚˜ ๋‹ค ๋น„์Šทํ•œ ๊ณ ๋ฏผ์„ ํ•œ๋‹ค. ๋„ˆ๋ฌด ๊นŠ์€ ๊ตด ํŒŒ์ง€ ๋ง์ž.. - -![](https://velog.velcdn.com/images/prettylee620/post/9b14ecb5-545b-4415-a307-b27331737156/image.png) - -์ตœ๊ทผ์—.. ์ž…์‚ฌํ•œ ์ง€ 2์ฃผ๋ฐ–์— ์•ˆ๋์ง€๋งŒ ์ทจ์—…์˜ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง€๋‹ˆ **์ปค๋ฆฌ์–ด์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ค‘์ด์—ˆ๋‹ค...** ๋‚˜์˜ ๊ฒฝ์šฐ ์ž‘๋…„ ๋ถ€ํŠธ์บ ํ”„๋ฅผ ํ•˜๋Š” ๋„์ค‘ ๊ฐœ๋ฐœ์šฉ ํŠธ์œ„ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ณ ๋ฏผ ๋“ฑ์„ ์ ์Œ ใ…‹ใ…‹ใ…‹ใ…‹ ๋‹ค์Œ์˜ ๊ธ€์„ ์“ฐ๋‹ˆ ๋น„์Šทํ•œ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋„ ์žˆ์—ˆ์œผ๋ฉฐ, ์ฃผ๋ง์— ์‰ฌ์–ด๋„ ๋ฒŒ์–ด๋จน๊ณ  ๊ดœ์ฐฎ๋‹ค๋Š” ์‚ฌ๋žŒ๋„ ์žˆ์—ˆ๋‹ค. - -> ๋‚˜๋Š” MBTI๊ฐ€ INFP์ธ๋ฐ **์„ฑ๊ฒฉ ์ƒ ๋Š์ž„์—†๋Š” ์„ฑ์žฅ์„ ๊ฐˆ๋งํ•˜์ง€๋งŒ ๋˜ ๊ธˆ๋ฐฉ์ง€์นœ๋‹ค. ํ•˜์ง€๋งŒ ์กฐ๊ธˆ์ด๋ผ๋„ ์„ฑ์žฅํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚˜ ์ž์‹ ์— ๋Œ€ํ•œ ํšŒ์˜๊ฐ์ด ์˜จ๋‹คใ…‹ใ…‹ใ…‹ใ…‹**(์ง„์งœ ์ด์ƒํ•œ ์„ฑ๊ฒฉ) - -**๋‚˜๋งŒ ์ด๋Ÿฐ๊ฐ€? ๋‚ด๊ฐ€ ๋ฌธ์ œ์ธ๊ฐ€?๋ผ๋Š” ์ƒ๊ฐ**๊ณผ ํšŒ์‚ฌ์—์„œ ๋‚˜ ์ž์‹ ์€ ๋„ˆ๋ฌด ์ž‘์•„๋ณด์ด๊ณ  ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋Š”๋ฐ ๋น„์Šทํ•œ ๊ณ ๋ฏผ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ \*\*๊นŠ๊ฒŒ ๋•…๊ตด ํŒŒ๊ธฐ ์ „์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค. \*\* - -![](https://velog.velcdn.com/images/prettylee620/post/e3a088bd-82c4-4549-9442-0bec80d40b0a/image.png) - -์ž์‹ ๋งŒ ๋ถ€์กฑํ•˜๊ณ  ์ž์‹ ๋งŒ ์ด๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•  ๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ ๋ณด๋ฉด ์—†์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๋” ๊นŠ์€ ๊ตด ํŒŒ๊ธฐ ์ „์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. - -### 4. ๋ฒˆ์•„์›ƒ ์™”์„ ์‹œ ์ž์‹  ๋งŒ์˜ ๋Œ€์ฒ˜๋ฒ•์„ ์ฐพ์•„๋ณด์ž. - -![](https://velog.velcdn.com/images/prettylee620/post/a3efc537-e218-4d8f-a9f5-73d8537e83f6/image.png) **(์ถœ์ฒ˜ : @PacerKorea)** - -ํŠธ์œ„ํ„ฐ์—์„œ ๋ดค๋Š”๋ฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„ ๊ฐ€์ง€๊ณ  ์™”๋‹ค. ์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ํŠนํžˆ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ์šฐ, ๋Š์ž„์—†์ด ๊ณต๋ถ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ง ๋•Œ๋ฌธ์— ๋ฒˆ์•„์›ƒ์ด ์™”์Œ์—๋„ ์˜จ ์ฑ„๋กœ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์ง€์น˜๊ณ  ๋” ์ง€์ณ์„œ ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊นŒ์ง€ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜ญ๐Ÿ˜ญ - -ํŠนํžˆ, ๋ถ€ํŠธ์บ ํ”„์—์„œ ์งง์€ ๊ธฐ๊ฐ„์— ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์ฃผ๋ณ€์—์„œ ๊ทธ๋Ÿฐ ๋ถ„๋“ค์ด ๋งŽ๋‹ค.. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ค๋ž˜ ์ผ ํ•˜์‹  ๋ถ„๋“ค๋„ ์ง€์ณํ•˜๋Š” ๊ฒƒ์„ ๋ดค๋‹ค. **(๋‚˜๋„ ๋ถ€ํŠธ์บ ํ”„ ๊ธฐ๊ฐ„์— ๋„˜์‚ฌ๋ฒฝ ๋น„์ „๊ณต์ž๋ถ„์— ๋ฒˆ์•„์›ƒ ์ฃผ๋งˆ๋‹ค ์™”์—ˆ์Œ..)** - -> ๋ฒˆ์•„์›ƒ์ด ์ž์ฃผ ์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์™”์„ ๋•Œ ์ž์‹ ๋งŒ์˜ ๋Œ€์ฒ˜๋ฒ•์œผ๋กœ **์™„์ „ํžˆ ์ด๊ฒจ๋‚ด์ง€๋Š” ๋ชปํ•˜๋”๋ผ๋„(๋Œ€๋ถ€๋ถ„ ๋ฒˆ์•„์›ƒ์„ ๊ฐ€์ง€๊ณ  ์‚ฐ๋‹ค๊ณ  ํ•จ) ๊ทธ๋ž˜๋„ ๋‹ค์‹œ ์ผ์–ด ์„ค ์ •๋„์˜ ํž˜์„ ํœด์‹ํ•˜๋ฉด์„œ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋‚ซ์ง€ ์•Š์„๊นŒ?** - -![](https://velog.velcdn.com/images/prettylee620/post/f42a310b-be74-4c10-9cdb-2d79f693de59/image.png) - -### 5. ์›ํ•˜๋Š” ํšŒ์‚ฌ ํ˜„์—…์ž ํ˜น์€ ํ˜„์—…์ž๋“ค ์ปคํ”ผ์ฑ— ์ตœ๋Œ€ ํ™œ์šฉํ•˜๊ธฐ(feat. ์ฒซ ์ปคํ”ผ์ฑ— ํ›„๊ธฐ) - -![](https://velog.velcdn.com/images/prettylee620/post/9cda2dc2-dd88-45dd-bd38-bf63c45215c6/image.png) - -์ด๋ฒˆ์ฃผ ๊ธˆ์š”์ผ์— ํŠธ์นœ 3๋ถ„๊ณผ ์ปคํ”ผ์ฑ—๊ณผ ์นผ๊ตญ์ˆ˜์ฑ—์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 1๋ถ„์€ ๋‚˜๋ž‘ ๊ฐ™์€ ์‹ ์ž… (๋ถ„์•ผ๋Š” ๋‹ค๋ฆ„)๋ณด์•ˆ์ชฝ 2๋ถ„์€ ๋Œ€๊ธฐ์—… ๊ฐœ๋ฐœ์ž์™€ ๋งค๋‹ˆ์ €(๋‘ ๋ถ„์˜ ํšŒ์‚ฌ๋Š” ๋‹ค๋ฆ„) - -ํšŒ์‚ฌ ๋๋‚˜๊ณ  `์นผ๊ตญ์ˆ˜์ง‘`์—์„œ ๋จผ์ € ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ์นผ๊ตญ์ˆ˜๋ฅผ ๋จน๊ณ  2์ฐจ๋กœ ๋ฐ”๋กœ ์˜† ์นดํŽ˜๋ฅผ ๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค. ์นดํŽ˜๊ฐ€์„œ ๋‘ ๋ถ„์ด ๋ช…ํ•จ์„ ์ฃผ์…จ๋‹ค.. - -๋˜๊ฒŒ ๋งŽ์€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  ๋ฌธํ™”์— ๋Œ€ํ•ด์„œ๋„ ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  **๋‚ด๊ฐ€ ์•„์ง ์•„๋Š” ์„ธ๊ณ„๋Š” ์ข๊ตฌ๋‚˜..ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ์‹ค์ œ ํ˜„์—…์— ์จ๋ณด์‹  ์Šคํƒ์— ๋Œ€ํ•ด์„œ ๋ณด์—ฌ์ฃผ์…จ๋Š”๋ฐ ํ์–ต... ๊ต‰์žฅํžˆ ๋งŽ์•˜๋‹ค. ๋ฐ˜์€ ๋‚ด๊ฐ€ ์ฒ˜์Œ ๋ณด๋Š” ๊ฒƒ๋“ค ใ…‹ใ…‹ใ…‹ใ…‹..** - -๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๊ธฐ์—…์˜ ์ฒด๊ณ„, ์ง€๊ธˆ ๊ธฐ์—…๋“ค์˜ ์ƒํƒœ ๋“ฑ๋„ ์•Œ๊ฒŒ ๋˜๊ณ  ์–ด๋–ค ๋ถ€๋ถ„์ด ์ค‘์š”ํ•œ์ง€.. ์‹ค์ œ ๋Œ€๊ธฐ์—…์—์„œ๋Š” log๊ฐ€ ๊ฐœ๋งŽ์•„์„œ DBMS๋กœ ์•ˆ๋ผ์„œ ํ•˜๋‘ก์„ ์“ด๋‹ค๋Š” ๊ฒƒ, ๋ณด์•ˆ์ชฝ์€ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆํ•œ ๊ฒƒ์„ ์—ฌ์ญˆ์–ด๋ดค๋‹ค. - -> ๐Ÿค” "ํšŒ์‚ฌ ๊ณต๊ณ ๋ฅผ ๋ณด๋ฉด ๋Šฅํ†ตํ•จ์ด๋ผ๊ณ  ์ ํ˜€์žˆ์ž–์•„์š” ๋Šฅํ†ตํ•จ์˜ ๊ธฐ์ค€์ด ๋ญ˜๊นŒ์š”?" ๐Ÿ˜ณ"๋Šฅํ†ตํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†๋‹ค. ๋‹ค๋งŒ ์ธํ„ฐ๋„ท์— ๋‚˜์™€์žˆ๋Š” ๊ฒƒ๋“ค์€ ์•Œ๊ณ  ๊ฑฐ๊ธฐ์„œ ๊ธฐ์—…์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์กฐ๊ธˆ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋ฝ‘ํžˆ๋Š” ๊ฑฐ๋‹ค. ์‹ค์ œ๋กœ ์ฝ”ํ…Œ์—์„œ ๊ฒ๋‚˜ ๋Šฅํ†ตํ•œ ์‚ฌ๋žŒ์ด ์žˆ์—ˆ๋Š”๋ฐ ๋ฉด์ ‘์„ ๋ณด๋‹ˆ ๊ทธ๋Ÿฐ ์ด๋ก ์  ์ง€์‹์€ ์ „๋ฌดํ•˜๋”๋ผ" - -๊ฑฐ๊ธฐ๋‹ค ์ƒ๊ฐ๋ณด๋‹ค.. ํŠธ์นœ๋ถ„๋“ค ์ค‘์— ๋Œ€๋‹จํ•œ ๋ถ„๋“ค์ด ๋งŽ๊ตฌ๋‚˜..๋ฅผ ๋Š๋‚Œใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ํŠธ์œ„ํ„ฐ์— ๊ฐœ๋ฐœ ๊ณ ์ˆ˜๋ถ„๋“ค์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค.. ํŠธ์œ„ํ„ฐ ๊ฐ•์ถ”..ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ - -์˜ฌํ•ด ์ปคํ”ผ์ฑ— ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋‚˜ ๋ณผ ์˜ˆ์ •์ด๋‹ค.. - -### 6. ์™„๋ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. - -> ์™„๋ฒฝํ•จ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋นจ๋ฆฌ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘๊ฐ„์ค‘๊ฐ„ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. - -๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ์€ ๋งŽ๊ณ .. ์™ธ์šธ๊ฑด ๋งŽ๊ณ  ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ - -![](https://velog.velcdn.com/images/prettylee620/post/3799d69f-ea9e-4cd2-b30b-d5e4cf084302/image.png) - -ํ•˜์ง€๋งŒ ์–ด์ฐจํ”ผ ์žฅ๊ธฐ์ „์ด๊ธฐ์— ์™„๋ฒฝํ•จ๋ณด๋‹ค๋Š” ์ฒœ์ฒœํžˆ ๋‚˜์•„๊ฐ์„ ๋ชฉํ‘œ๋กœ ์žก์ž... - -![](https://velog.velcdn.com/images/prettylee620/post/d5059422-313a-4f1b-9d51-dd806b85acbf/image.png) - -ํŠธ์œ„ํ„ฐ์—์„œ ๋„๋Š” ๊ธ€์ธ๋ฐ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•จ ์ฐธ๊ณ ํ•˜๋ผ๊ณ  ๊ฐ€์ ธ์˜ด - -### 7. ๊ฐ™์€ ์ง๋ฌด ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์ž. - -ํŠธ์œ„ํ„ฐ๋˜์ง€.. ์˜คํ”ˆ์ฑ„ํŒ…์ด๋ผ๋˜์ง€.. ๋งํฌ๋“œ์ธ์ด๋ผ๋˜์ง€ ์•„๋ฌด๊ฑฐ๋‚˜ ๊ดœ์ฐฎ๋‹ค... ๋‚˜์˜ ๊ฒฝ์šฐ ์ „๋ฌธ๋Œ€๋ผ ์‚ฌ์‹ค ์ด ๋ถ„์•ผ๋กœ ๊ฐ„ ์‚ฌ๋žŒ์ด ํ•œ์ •์ ์ด๋ผ ์—ํƒ€๋ฅผ ์ด์šฉํ•  ์ˆ˜๋Š” ์—†์—ˆ๋‹ค. - -์ƒ๊ฐ๋ณด๋‹ค **ํŠธ์œ„ํ„ฐ**๋ฅผ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŽ์ด ์ด์šฉํ•œ๋‹ค๊ณ ํ•ด์„œ 8์›”์— ๊ธ€ 1\~2๊ฐœ ์ ๊ณ ๋‚˜์„œ ํŠธ์นœ์†Œํ•˜๊ณ  ๊พธ์ค€ํžˆ ๊ต๋ฅ˜๋ฅผ ๋Š˜๋ ค์™”๋‹ค. - -
- -ํŠธ์œ„ํ„ฐ๋กœ ์ธํ•ด ๋‚ด ๊ฐœ๋ฐœ์ž ์‚ถ์— ๋งŽ์€ ๋„์›€์„ ์–ป์—ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹๐Ÿ˜ญ๐Ÿ˜ญ ์ง„์งœ.. ์œ„๋กœ๋„ ๋งŽ์ด ๋ฐ›๊ณ  ๊ณต๊ฐ๋„ ๋งŽ์ด ํ–ˆ๋‹คใ…‹ใ…‹ใ…‹ ์ข‹์€ ๊ธ€๋„ ๋งŽ์•˜๋‹ค. ์ด๋Ÿฐ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์ž!!! - -### 8. ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋น ๋ฅด๊ฒŒ๊ฐ€ ์•„๋‹Œ ๋ฐฉํ–ฅ์„ฑ - -๋ฌผ๋ก  ์ด๊ฑด ๊ฐœ์ธ๋งˆ๋‹ค ์ƒ๊ฐ์ด ๋‹ค๋ฅผ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋ฐฉํ–ฅ์„ฑ์„ ์žก์œผ๋ฉด ์šฐ์งํ•˜๊ฒŒ ๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—..(์‚ฌ์‹ค ๋น ๋ฅด๊ฒŒ๊ฐ€ ์•ˆ๋จ ใ…‹ใ…‹ใ…‹) - -์•„์ง ์ž…์‚ฌํ•œ ์ง€ ํ•œ๋‹ฌ๋„ ์•ˆ๋๊ณ  ๋ช‡ ๋‹ฌ ๊ฐ„์€ ๋ฐฉํ–ฅ์„ฑ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค!!! - -### 9. ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ฐ๋จน์ด๋ผ๋„ ์ง์ ‘ ํ•ด๋ณด์ž. - -์ปคํ”ผ์ฑ—์—์„œ ์š”์ฆ˜ ๊ธฐ์—…๋“ค์ด ๋Ÿฌ์ŠคํŠธ๋กœ ๋งŽ์ด ๋ฐ”๊พธ๊ณ  ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ค์—ˆ๋‹ค..c++, c#๋„ ๋Ÿฌ์ŠคํŠธ(Rust)๋กœ ๋งŽ์ด ๋ฐ”๊พธ๊ณ  ๊ธฐ์—…์—์„œ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ๋งŽ์ด ๋Š˜์–ด๋‚˜๊ณ  ์žˆ๋‹ค๊ณ .. - -๊ทธ๋ž˜์„œ ์ฃผ๋ง์— ์ผ๋‹จ Rust์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— IDE ํˆด์ด๋ž‘ ์ปดํŒŒ์ผ๋Ÿฌ๋งŒ ์„ค์น˜ํ–ˆ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/458afe51-fce4-481c-83f3-d2b24cb50568/image.png) - -์ฐ๋จน์„ ํ•ด๋ณด๊ณ  ๋‚˜๋ž‘ ๋งž๋Š”์ง€ ํŒ๋‹จํ•ด์•ผ ๊ฒ ๋‹ค. - -> ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์‚ฌ์ดํŠธ : [๋ฐ๋ธŒํด๋ฆฌ์˜ค](https://devfolio.kr/) - -๋ชจ๋“  ๊ฐœ๋ฐœ์ž, ์ง์žฅ์ธ, ์ทจ์ค€์ƒ, ๋Œ€ํ•™์ƒ ๋ชจ๋‘ ํ™”์ดํŒ…!!! - -> [VELOG ๋ฒ„์ „](https://velog.io/@prettylee620/%EC%9A%94%EC%A6%98-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%85%EC%84%9C-%EC%9A%94%EC%95%BD-%EB%B0%8F-%EA%B0%9C%EC%9D%B8%EC%A0%81%EC%9D%B8-%EC%83%9D%EA%B0%81) - -
diff --git a/developLog/book/onboarding/1.md b/developLog/book/onboarding/1.md deleted file mode 100644 index a85c54d..0000000 --- a/developLog/book/onboarding/1.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -description: 1์žฅ์„ ์ฝ๊ณ  ์ •๋ฆฌ ---- - -# ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 1์žฅ - -## ์ฝ๊ฒŒ ๋œ ๊ณ„๊ธฐ - -> ํŠธ์œ„ํ„ฐ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. sns๋Š” ์ž˜ ์•ˆํ–ˆ๋Š”๋ฐ ํŠธ๋ Œ๋“œ๋ฅผ ์ฝ๊ณ  ์ข‹์€ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์ด ํŠธ์œ„ํ„ฐ์—์„œ ํ™œ๋™์„ ๋งŽ์ด ํ•˜๊ธฐ์— ๊ฐœ๋ฐœ์šฉ์œผ๋กœ 1๊ฐœ์˜ ๊ณ„์ •์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ ์ถ”์ฒœํ•˜๋Š” ์ฑ…๋“ค ์ค‘์— **์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ์ž”์†Œ๋ฆฌ**๋ž‘ ์‹ค๋ฌด์— ๋Œ€ํ•ด์„œ ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๊ต๋ณด๋ฌธ๊ณ ์— ๊ฐ€์„œ ๊ตฌ๋งคํ–ˆ๋‹ค. ์•„์ง 2์žฅ๊นŒ์ง€ ๋ฐ–์— ๋ชป ์ฝ์—ˆ๋Š”๋ฐ ์žฌ๋ฏธ์žˆ๊ณ  ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ๋„ ์•Œ๊ฒŒ ๋˜์–ด ์žŠ์ง€ ์•Š๊ณ  ์ž์ฃผ ๋ณด๊ธฐ ์œ„ํ•ด ์ ์–ด๋ณด๊ณ ์ž ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. - -> ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! - -![](https://velog.velcdn.com/images/prettylee620/post/9079b4ef-9a79-4676-9b3e-da4a57f0c3d2/image.png) - -## \[1์žฅ] ์—ฌ์ •์„ ์‹œ์ž‘ํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ฒซ ์ถœ๋ฐœ ์•ž์œผ๋กœ ์–ด๋–ค ๊ธธ์ด ํŽผ์ณ์งˆ๊นŒ? - -### ๐Ÿ“Œ ๋ชฉํ‘œ๋ฅผ ์„ธ์šฐ์ž - -#### 1. ๊ธฐ์ˆ  ์ง€์‹ - -* ์ปดํ“จํ„ฐ ๊ณผํ•™์˜ ๊ธฐ์ดˆ ์ง€์‹์„ ๊ฐ–์ถ”์ž - -> ๐Ÿ€ **ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE), ๋นŒ๋“œ ์‹œ์Šคํ…œ, ๋””๋ฒ„๊ฑฐ, ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„์—ฌ ํ•˜๋ฉฐ, ์ง€์†์  ํ†ตํ•ฉ, ์ง€ํ‘œ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง, ์„ค์ •, ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ ๋“ฑ๋„ ๋Šฅ์ˆ™ํžˆ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.** - -* ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์‚ฌ์ „์— ๋งŒ๋“ค์–ด ๊ฐœ์„ ํ•ด์•ผ ํ•˜๋ฉฐ, ์•„ํ‚คํ…์ฒ˜ ์ฐจ์›์—์„œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ๋Š” ์šด์˜์ธก๋ฉด๋„ ๊ณ ๋ ค\ - - -#### 2. ์‹คํ–‰๋ ฅ - -* ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ ๊ฐ€์น˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋ฉฐ ์—…๋ฌด์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ„์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋„ ์ดํ•ด -* ์ฝ”๋“œ ์ž‘์„ฑ + ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ + ๊ธด๊ธ‰ ๋Œ€์‘ ์—…๋ฌด ๊ต๋Œ€ ์ง„ํ–‰ + ์šด์˜ ์ด์Šˆ ๋””๋ฒ„๊น… - -> ๐Ÿ€ **์ฃผ๋„์ ์ด๋ฉด์„œ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ์˜์ง€ํ•  ๋งŒํ•œ ์‚ฌ๋žŒ์ด ๋ผ์•ผ ํ•œ๋‹ค.** - -#### 3. ์˜์‚ฌ์†Œํ†ต - -* ๋ฌธ์„œ๋Š” ๋ฌผ๋ก ์ด๊ฑฐ๋‹ˆ ๊ตฌ๋‘๋กœ๋„ ๋ช…ํ™•ํ•˜๊ฒŒ ์†Œํ†ต -* ํ”ผ๋“œ๋ฐฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ ๊ทน์ ์œผ๋กœ ๋„์›€์„ ์š”์ฒญํ•˜๊ณ  ๋ชจํ˜ธํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋ช…ํ™•ํ•œ ์ •๋ณด๋ฅผ ์š”๊ตฌ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - -#### 4. ๋ฆฌ๋”์‰ฝ - -* ๋ฒ”์œ„๊ฐ€ ์ž˜ ์ •์˜๋œ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. -* ๋ณ€ํ™”์™€ ๋ชจํ˜ธ์„ฑ์„ ์ž˜ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ์™€ ๋ถ„๊ธฐ๋ณ„ ๊ณ„ํš ์ˆ˜๋ฆฝ์— ์ ๊ทน์  ์ž„ํ•ด์•ผ ํ•œ๋‹ค.\ - - -### ๐Ÿ“Œ ์ดˆ๋ณด์ž - -#### 1. ์˜จ๋ณด๋”ฉ ํšŒ์˜ - -> ๐Ÿ€ ํšŒ์‚ฌ์™€ ํŒ€ ๊ทธ๋ฆฌ๊ณ  ์—…๋ฌด ๋ฐฉ์‹์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•˜๋ฉฐ ์˜จ๋ณด๋”ฉ ํšŒ์˜๋„ ์ฐธ์„ํ•ด์•ผ ํ•œ๋‹ค. - -* ํšŒ์‚ฌ๊ฐ€ OT๊ฐ€ ์—†๋‹ค๋ฉด, ์ง์† ํŒ€์žฅ์—๊ฒŒ ์กฐ์ง๋„(๋‹ด๋‹น ์—„๋ฌด, ์ธ๋ ฅ ๊ตฌ์„ฑ, ๋ณด๊ณ  ์ฒด๊ณ„ ๋“ฑ), ํƒ€ ๋ถ€์„œ ์•ˆ๋‚ด, ํ˜‘์—… ๊ด€๊ณ„ ๋“ฑ์„ ์„ค๋ช…ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ ํ›„ ๋ฉ”๋ชจํ•ด๋‘์ž. -* ๊ฐœ๋ฐœํ™˜๊ฒฝ๊ณผ ์‹œ์Šคํ…œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์…‹์—…ํ•˜๊ณ  ๋ณดํŽธ์ ์ธ ํŒ€์˜ ์ ˆ์ฐจ๋“ค๊ณผ ํšŒ์˜ ์ผ์ • ํŒŒ์•… -* ๋ฌธ์„œ๋„ ์ฝ๊ณ  ํŒ€์›๋“ค๊ณผ ์†Œํ†ต๋„ ํ•ด์•ผํ•˜๋ฉฐ, ๋ฌธ์„œ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ฉฐ ํŒ€์— ๊ธฐ์—ฌ ํ•ด์•ผํ•œ๋‹ค. - -#### 2. ์…‹์—… ๊ณผ์ • ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ๋‘์ž - -* ์ถ”๊ฐ€์ ์ธ ์˜จ๋ณด๋”ฉ ์ ˆ์ฐจ(์‹œ์Šคํ…œ ์ ‘๊ทผ ๊ถŒํ•œ ํš๋“, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์…‹์—…, ์ฝ”๋“œ์˜ ์ฒดํฌ์•„์›ƒ ๋ฐ ๋นŒ๋“œ)๋“ฑ์„ ๊ฐ–์ถฐ์ง€์ง€ ์•Š์€ ํšŒ์‚ฌ๋ผ๋ฉด, ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด์ž. - -#### 3. ํ˜„ ์กฐ์ง์˜ ์—…๋ฌด ์ง„ํ–‰ ์ ˆ์ฐจ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. - -* ์ž‘์€ ๊ทœ๋ชจ์˜ ์ž‘์—…๋ถ€ํ„ฐ ํ•ด๋ณด์ž -* ์ฃผ์„ ์ˆ˜์ • ๊ฐ™์€ ์†Œ์†Œํ•œ ์ž‘์—…๋„ ์ข‹๋‹ค. - -#### 4. ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋‚˜ IDE๋ฅผ ์…‹์—…ํ•˜์ž. - -* IDE๋Š” ํŒ€์ด ์“ฐ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์˜จ๋ผ์ธ ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐพ์•„๋ณด์ž. -* ํ•„์š”ํ•˜๋‹ค๋ฉด ํŒ€์—์„œ ์–ด๋–ค ์ฝ”๋”ฉ ๊ทœ์น™์„ ์„ธ์› ๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋ฉด ๋˜๋Š”์ง€ ๋ฌผ์–ด๋ณด๋Š” ํŽธ์ด ์ข‹๋‹ค. - -#### 5. ํŒ€์žฅ์ด ์Šคํƒ ๋“œ์—… ๋ฏธํŒ…, ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš, ํšŒ๊ณ , ์ „์‚ฌ ํšŒ์˜ ๋“ฑ ํŒ€์ด๋‚˜ ํšŒ์‚ฌ ํšŒ์˜์— ์ถ”๊ฐ€ํ•ด๋’€๋Š”์ง€ ํ™•์ธํ•˜์ž - -* ์ผ๋Œ€์ผ ํšŒ์˜ ์ œ๋„๊ฐ€ ์žˆ๋‹ค๋ฉด ํŒ€์žฅ์—๊ฒŒ ์ผ๋Œ€์ผ ํšŒ์˜ ์ผ์ • ์žก์•„๋‹ฌ๋ผ๊ณ  ํ•˜์ž. - -### ๐Ÿ“Œ ์งˆํ’ ๋…ธ๋„์˜ ์„ฑ์žฅ - -#### 1. ๋ชจ๋ฅด๋Š” ์ ์ด ์žˆ๋‹ค๋ฉด ์งˆ๋ฌธํ•˜๊ณ , ์ž‘์—…์— ๋Œ€ํ•ด ์ž์ฃผ ๋ฆฌ๋ทฐํ•ด์ค„ ๊ฒƒ์„ ํŒ€์—๊ฒŒ ์š”์ฒญํ•˜์ž. - -* ๊ธฐ์ดˆ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ž‘์—…ํ•œ๋‹ค. -* ๋ชจ๋ฅด๋Š” ์ ์ด ์žˆ๋‹ค๋ฉด ์งˆ๋ฌธํ•˜๊ณ , ์ž‘์—…์— ๋Œ€ํ•ด ์ž์ฃผ ๋ฆฌ๋ทฐํ•ด์ค„ ๊ฒƒ์„ ํŒ€์—๊ฒŒ ์š”์ฒญํ•˜์ž. - -#### 2. ํ•™์Šต : ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ์‚ดํ‘œ๋ณด์ž - -* ํ’€ ๋ฆฌํ€˜์ŠคํŠธ, ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ์ฝ์–ด๋ณด์ž. -* ๊พธ์ค€ํ•œ ํ•™์Šต ํ•„์š” - -#### 3. ํŒ€์žฅ์€ ์ฃผ๋กœ ์ง„์ฒ™์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ธธ ์›ํ•˜๋ฏ€๋กœ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ˜„ ์ƒํ™ฉ์„ ๊ณต์œ ํ• ์ง€ ๋ฌผ์–ด๋ณด์ž - - - -#### 4. ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš ํšŒ์˜ ์‹œ์ž‘ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ณ„ํš ํšŒ์˜ ๋“ฑ์— ์ฐธ์—ฌ ์‹œ, ํšŒ์˜์—์„œ ๋กœ๋“œ๋งต์— ๋Œ€ํ•œ ๊ฐœ์š”๋‚œ ๊ฐœ๋ฐœ ๊ณ„ํš ์ ˆ์ฐจ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด์ž - - - -### ๐Ÿ“Œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์—ฌ์ž - -> ๋” ํฐ ๊ทœ๋ชจ๋‚˜ ํฐ ์ž‘์—…์ด๋‚˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์—ฌ์ž - -#### 1. ์†์‰ฝ๊ฒŒ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•, ์˜์กด์„ฑ์„ ์ ์ ˆํžˆ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊น”๋”ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ์ž - -#### 2. ๋‹ค๋ฅธ ํŒ€์›์„ ๋•๊ณ  ๋„์›€๋ฐ›์œผ๋ฉฐ ํ”ผ๋“œ๋ฐฑ์„ ํ•˜๋ฉฐ ๋ฐ›์œผ๋ฉฐ, ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•ญ์ƒ ์งˆ๋ฌธ์„ ํ•˜์ž - -#### 3. ํŒ€ ๊ณ„ํš์— ์ฐธ์—ฌํ•˜๊ณ  ํŒ€์žฅ๊ณผ ํ˜‘์—…ํ•ด OKR(๋ชฉํ‘œ์™€ ํ•ต์‹ฌ ๊ฒฐ๊ณผ)๋ฅผ ์„ค์ •ํ•˜์ž - - - -### ๐Ÿ“Œ ์šด์˜์˜ ๋ฐ”๋‹ค - -> ์ฐธ์—ฌํ•˜๋Š” ์ž‘์—…์˜ ๊ทœ๋ชจ๊ฐ€ ์ ์  ์ปค์งˆ ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. - -#### 1. ์ฝ”๋“œ ์ „๋‹ฌ ๊ณผ์ •์—์„œ๋Š” ํ…Œ์ŠคํŠธ, ๋นŒ๋“œ, ๋ฆด๋ฆฌ์Šค, ๋ฐฐํฌ, ๋กค์•„์›ƒ ๋“ฑ ๋งŽ์€ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค. ์Šคํ‚ฌ ํ•„์š” - -#### 2. ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋กค์•„์›ƒ ํ›„์—๋Š” ํŒ€์ด ๋งŒ๋“  ์†Œํ”„ํŠธ์›จ์–ด ์šด์˜ํ•ด์•ผ ํ•œ๋‹ค. - -* ๊ฐ์ข… ์ง€ํ‘œ, ๋กœ๊ทธ, ์ถ”์  ๋„๊ตฌ ๋“ฑ์„ ์ด์šฉํ•ด ์‹คํ–‰ ์ค‘์ธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. -* ์–ด๋Š ์‹œ์ ์—๋Š” ๊ธด๊ธ‰๋Œ€์‘ ์˜จ์ฝœ ๋Œ€์‘ ์—…๋ฌด์—๋„ ํ•ฉ๋ฅ˜ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. -* ์†Œํ”„ํŠธ์›จ์–ด ๋ณดํ˜ธ ๋ฐฉ๋ฒ•๋„ ๋ฐฐ์šธ ๊ฒƒ์ด๋‹ค.\ - - -### ๐Ÿ“Œ ๋Šฅ๋ ฅ์ž์˜ ๋•… - -> ์šด์˜ ํ›„์—๋Š” ํŒ€์€ ์šฐ๋ฆฌ๊ฐ€ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ์ •๋„๋Š” ์Šค์Šค๋กœ ์ฃผ๋„ํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋Ÿ‰์„ ๊ฐ–์ท„๋‹ค๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ด๋‹ค. - -#### 1. ๊ธฐ์ˆ  ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๊ณ„ํš ์ˆ˜๋ฆฝ๋„ ๊ฑฐ๋“ค์–ด์•ผ ํ•œ๋‹ค. - -* ์ฒซ ์„ค๊ณ„์— ์•ˆ์ฃผํ•˜์ง€ ๋ง๊ณ  ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ฐœ์ „์„ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๊ณ„ํš์„ ์„ธ์šฐ์ž - -#### 2. ๋ชจ๋“  ๊ฒƒ์„ ์ƒˆ๋กœ ์žฌ์ž‘์„ฑ ์‹œ๋„๋Š” ํ•˜์ง€ ๋งˆ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. - -* ์•„ํ‚คํ…์ฒ˜, ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์‹œ์Šคํ…œ, ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์˜ ๊ฒฐํ•จ ๋“ฑ์ด ๋ˆˆ์— ๋„๊ฒŒ ๋˜๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ์ผ์ƒ์ ์ธ ์—…๋ฌด ๊ทธ๋ฆฌ๊ณ  ์œ ์ง€๋ณด์ˆ˜์™€ ๋ฆฌํŒฉํ„ฐ๋ง ์ž‘์—… ์‚ฌ์ด์— ๊ท ํ˜•์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šด๋‹ค. - -#### 3. ํŒ€์žฅ์—๊ฒŒ ์˜๊ฒฌ ๊ณต์œ  - -#### 4. ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ ์„ค์ • ํ›„ ์„ฑ๊ณผ ๋ฆฌ๋ทฐํ•˜๋ฉฐ, ๋™๋ฃŒ๋“ค์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ ๋ฐ›์ž. - -### ๐Ÿ“Œ ์ •๋ฆฌํ•˜๋ฉฐ - -> ์ด ์ฑ…... ์ทจ์—…ํ•˜๊ณ  ๋ณด๋‹ˆ ์‹ ์ž…์€ ์ดˆ๋ณด์ž, ์งˆํ’ ๋…ธ๋„์˜ ์„ฑ์žฅ ์ด๊ฑฐ๋ž‘ ๋น„์Šทํ•˜๋‹ค๋Š” ๊ฒƒ!!! + ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ƒํ™ฉ ๊ณต์œ ๋Š” ๊ผญ ํ•„์š”ํ•˜๋‹ค!!! diff --git a/developLog/book/onboarding/2.md b/developLog/book/onboarding/2.md deleted file mode 100644 index 5251e31..0000000 --- a/developLog/book/onboarding/2.md +++ /dev/null @@ -1,284 +0,0 @@ ---- -description: ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 2์žฅ ---- - -# ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 2์žฅ - -![](https://velog.velcdn.com/images/prettylee620/post/cf77a62d-212d-4c66-a49c-685fa3c59a98/image.png) - -> ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ์„ ์ฝ๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ด๋ฉฐ, ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - -## ์—ญ๋Ÿ‰์„ ๋†’์ด๋Š” ์˜์‹์  ๋…ธ๋ ฅ - ๊ฒฝ์Ÿ์ž๊ฐ€ ๊ฐ–์ถ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์Šค์Šค๋กœ ํ•ด์•ผ ํ•  ์ผ - -### 1. ๋“ค์–ด๊ฐ€๋ฉฐ - -> ํ•™์Šต์„ ์œ„ํ•œ ๊ฐ€๋ฅด์นจ์ด๋ผ๋Š” ์ฑ…์—์„œ `๋Šฅ์ˆ™ํ•จ`์„ 4๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด ์˜๋ฏธ ํ–ˆ๋‹ค. - -1. ๋ฌด์˜์‹์  ๋Šฅ๋ ฅ ๋ถ€์กฑ -2. ์˜์‹์  ๋Šฅ๋ ฅ ๋ถ€์กฑ -3. ์˜์‹์  ๋Šฅ์ˆ™ -4. ๋ฌด์˜์‹์  ๋Šฅ์ˆ™ - -> - -๋ชจ๋“  ์—”์ง€๋‹ˆ์–ด๋Š” ์˜์‹์ ์ด๋“  ๋ฌด์˜์‹์ ์ด๋“  ๋Šฅ๋ ฅ ๋ถ€์กฑ ๋‹จ๊ณ„์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋ชฉํ‘œ๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์˜์‹์  ๋Šฅ์ˆ™ ๋‹จ๊ณ„๋กœ ์ ‘์–ด๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋˜ํ•œ ์ด ์žฅ์—์„œ ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต์ด๋ผ๋Š” ์Šต๊ด€ ๋ฐฉ๋ฒ•๊ณผ ๊ท ํ˜• ์œ ์ง€, ๊ฐ€๋ฉด ์ฆํ›„๊ตฐ, ๋”๋‹ ํฌ๋ฃจ๊ฑฐ ํšจ๊ณผ์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃฌ๋‹ค. ์Šค์Šค๋กœ์— ๋Œ€ํ•œ ๋ถˆ์‹ ์ด๋‚˜ ๊ณผ์‹ ์— ๋น ์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜๋ฉฐ ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต์„ ๊ณ„์†ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์งˆ๋ฌธ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์˜์‹์  ๋Šฅ์ˆ™ํ•จ์„ ๋น ๋ฅด๊ฒŒ ๊ฐ–์ถœ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. - -### 2. ์‹ค์ „์— ์•ž์„œ ์ตํ˜€์•ผ ํ•  ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต ๋ฐฉ์•ˆ - -* ํ•™์Šต์— ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๋™์‹œ์— ์‹œ๋„ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. -* ์ง€์†์ ์ธ ์„ฑ์žฅ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ๊นจ์–ด ์žˆ๋Š” ๋‚ด๋‚ด ์ผ๋งŒ ํ•˜๋Š” ๊ฒƒ์€ ๊ฑด๊ฐ•์„ ํ•ด์น˜๋ฏ€๋กœ ๊ฐœ์ธ ์‹œ๊ฐ„์„ ๋ฐ˜๋“œ์‹œ ํ™•๋ณดํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค. - -### 3. ๋ณธ๊ฒฉ์ ์ธ ํ•™์Šต์„ ์œ„ํ•œ ๋ชธํ’€๊ธฐ - -> ์ด ์ดˆ๋ฐ˜ ๊ณผ์ •์€ ์ง€๋ฃจํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๋ฐ”์œ๋ฐ ๋งˆ์น˜ ์ž์‹ ๋งŒ ํ•œ๊ฐ€ํ•œ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ๋„ ๋“ค ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ฑฑ์ •๋งˆ๋ผ. ์ ์‘ํ•  ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. - -* ์ž…์‚ฌ ํ›„ ์ฒ˜์Œ ๋ช‡ ๋‹ฌ๊ฐ„์€ ์ผ๋‹จ ์ƒํ™ฉ์ด ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•˜์ž. -* ๊ทธ๋Ÿฌ๋ฉด ์„ค๊ณ„ ํšŒ์˜๋‚˜ ์˜จ์ฝœ ๊ต๋Œ€ ์—…๋ฌด, ์šด์˜ ์ด์Šˆ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋“ฑ์— ์ฐธ์—ฌํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค. - -### 4. ์ง์ ‘ ๋ถ€๋”ชํ˜€๋ณด๋ฉด ๊นจ๋‹ซ์ž - -> ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ๋ฐฐํฌํ•  ๋•Œ ์–ด๋”˜๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์„ ๋‘๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ํŒ€์žฅ๋“ค๋„ ๋…น๋ก์น˜ ์•Š์•„์„œ ๊ฒฐ์ฝ” ์‹ฌ๊ฐํ•œ ํ”ผํ•ด๋ฅผ ์ž…ํž ๋งŒํ•œ ์ƒํ™ฉ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. (๋””๋งŒ ๋Œ€์•ˆ์ด ์—†๋Š” ๊ฒฝ์šฐ ์‹ ๊ทœ ์ž…์‚ฌ์ž๊ฐ€ ์œ„ํ—˜ ๋ถ€๋‹ด ๋†’์€ ์ž‘์—…์— ํˆฌ์ž…๋  ๋•Œ๋„ ์žˆ๋‹ค.) - -* ๋ฌธ์„œ๋ฅผ ์ฝ์–ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์‹ค์ „์„ ํ†ตํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋งŽ๋‹ค. -* ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ฝ”๋”ฉ์„ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐฐํฌํ•ด์•ผ ํ•œ๋‹ค. -* ๋งŒ์•ฝ ์‹ค์ˆ˜ํ•˜๋”๋ผ๋„ ์Šค์Šค๋กœ๋ฅผ ๋„ˆ๋ฌด ์ฑ…๋งํ•˜์ง€ ๋ง์ž. ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šด ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๊ธฐ๋กํ•ด๋‘๊ณ  ๊ณ„์† ์ •์ง„ํ•ด ๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค. - -### 5. ์ฝ”๋“œ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ํ•ด๋ณด์ž - -> ์–ด๋–ค ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ์ด ๋œ ๊ฒƒ์€ ์•Œ๊ฒ ๋Š”๋ฐ ๋„๋Œ€์ฒด ์–ด๋–ค ๊ฒฝ๋กœ๋กœ ๊ทธ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋๋Š”์ง€ ์•Œ์•„๋‚ด์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ๋Š” `์˜ˆ์™ธ`๋ฅผ ๋˜์ง€๊ฑฐ๋‚˜ `์Šคํƒ ํŠธ๋ ˆ์ด์Šค`๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด `๋””๋ฒ„๊ฑฐ`๋ฅผ ๋ถ™์—ฌ ํ˜ธ์ถœ ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๋“ฑ์˜ ์‹œ๋„ - -* ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‹œ๋„๋ฅผ ํ•ด๋ณด๋ฉฐ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋‘์ž. - -#### ๐ŸŠ ์—ฌ๊ธฐ์„œ ์ž ๊น! ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ž€? - -> ์ผ๋‹จ ์ถœ์ฒ˜ https://jaehoney.tistory.com/51 https://okky.kr/articles/338405 - -**๊ฐœ๋…** - -* ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋œ ์‹œ์ ๋ถ€ํ„ฐ ํ˜„์žฌ ์œ„์น˜๊นŒ์ง€์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋ชฉ๋ก -* ์˜ˆ์™ธ๊ฐ€ ์–ด๋””์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด JVM์„ ์ƒ์„ฑ - -**ํ•„์š” ์ด์œ ** - -* ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ์ฝ๋Š” ๋Šฅ๋ ฅ์€ ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜ -* ๋ฌดํ„ฑ๋Œ€๊ณ  ์˜ค๋ฅ˜๋‚ด์šฉ์„ ๋ณต๋ถ™ํ•˜๊ณ  ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ฝ”๋“œ๋„ ๋ณต๋ถ™ํ•œ๋‹ค๋ฉด ์ง๋ฉดํ•œ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐœ์ „ ์—†์ด ๋จธ๋ฌผ๋Ÿฌ ์žˆ๊ฒŒ ๋จ -* ๊ฐ•์‚ฌ๋‹˜๋„ ํ•ญ์ƒ ๊ฐ•์กฐํ•˜๋Š” ๋‚ด์šฉ - -**๊ทธ๋ ‡๋‹ค๋ฉด ์ฝ๋Š” ๋ฒ•?** - -```JAVA -public class StackTraceTest -{ - public static void main(String[] args) - { - one(); - } - - public static void one() - { - two(); - } - - public static void two() - { - three(); - } - - public static void three() - { - Integer.parseInt("abcde"); - } -} -``` - -![](https://velog.velcdn.com/images/prettylee620/post/0bc51219-6345-49e0-899d-cfc22c9ee627/image.png) - -1. ์ŠคํƒํŠธ๋ ˆ์ด์Šค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋œ ์‹œ์ ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋œ ์‹œ์ ๊นŒ์ง€ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— **๋จผ์ € ์‹คํ–‰๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ€์žฅ ์•„๋ž˜** -2. ๋‚˜๋„ ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€๋งŒ ๊ฒ๋จน๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ถ„๋“ค์ด ๊ทธ๋ ‡๋”๋ผ -3. ํ•˜์ง€๋งŒ ์—๋Ÿฌ์˜ ์ง„์ •ํ•œ ์›์ธ์€ ๊ฐ€์žฅ ์•„๋ž˜์ชฝ(์ดˆ๊ธฐ)์— ์žˆ๋Š” `Caused by:`๋กœ ์‹œ์ž‘๋˜๋Š” ์ค„๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์„ธ์ค„์ด๋ฉด ์ถฉ๋ถ„ - -```java -Caused by: java.lang.NullPointerException - at com.mycompany.service.impl.PortalManagerImpl.deleteMenuItem(PortalManagerImpl.java:603) - at com.mycompany.service.impl.PortalManagerImpl.deletePortal(PortalManagerImpl.java:358) -``` - -4. ์œ„์˜ ๋‚ด์šฉ์€ com.mycompany.service.impl.PortalManagerImpl' ํด๋ž˜์Šค์˜ `deletePortal` ๋ฉ”์†Œ๋“œ 358๋ผ์ธ์—์„œ ๊ฐ™์€ ํด๋ž˜์Šค์˜ `deleteMenuItem`๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ 603๋ฒˆ ์งธ ์ค„์—์„œ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ผ๊ณ  ํ•ด์„ - -> **okky์˜ ์งˆ๋ฌธ** ![](https://velog.velcdn.com/images/prettylee620/post/44408d1c-8078-468d-b5c6-1a9b2be04488/image.png) **okky์˜ ๋‹ต๋ณ€** `deleteMenuItem()`์€ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ผ์„œ ํ˜ผ๋™์ด ๋˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ŠคํƒํŠธ๋ ˆ์ด์Šค์˜ ์ธ์šฉํ•˜์‹  ๋ถ€๋ถ„์€ "603๋ฒˆ ์งธ ์ค„์—์„œ deleteMenuItem()์„ ํ˜ธ์ถœํ•  ๋•Œ"๊ฐ€ ์•„๋‹ˆ๋ผ "ํ˜ธ์ถœ๋œ deleteMenuItem() ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€์˜ 603๋ฒˆ ์งธ ์ค„"์ž„ ๐Ÿ‡ ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด, deleteMenuItem() ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ getMenuItems(item.getPortal().getId(), item.getId()) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, item์ด null์ธ ๊ฒฝ์šฐ NullArgumentException์ด ๋ฐœ์ƒํ•˜๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง‘๋‹ˆ๋‹ค. - -5. `PortalManagerImpl` ํด๋ž˜์Šค ์†Œ์Šค - -```java -if (item == null) { - throw new NullArgumentException("item"); -} - -//์ค‘๊ฐ„ ์ƒ๋žต -List children = getMenuItems(item.getPortal().getId(), item.getId()); // 603๋ฒˆ์งธ ์ค„ - -for (PortalMenu child : children) { - deleteMenuItem(child); - } -``` - -**๊ทธ๋ ‡๋‹ค๋ฉด..? ๋„ํฌ์ธํŠธ exception ์›์ธ์€?** - -* ๋งŽ์€ ์ˆ˜์˜ ์ง€์›์ž๋“ค์ด `children`์ด๋‚˜ `item.getId()` ๋“ฑ์— ๋„๊ฐ’์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋‹ตํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ํ•ด๋‹น ๋ผ์ธ์—์„œ ๋„๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š”, - -> 1. children - -2. item -3. item.getPortal() -4. item.getPortal().getId() -5. item.getId() - -* ์ด ์ค‘ ์ ์–ด๋„ ๋‘ ๊ฐ€์ง€, ์ฆ‰ 2๋ฒˆ ํ˜น์€ 3๋ฒˆ์œผ๋กœ ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐ”๋กœ ์ขํžˆ์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ์˜ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค. - -> ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ๋ณ€์ˆ˜์— ๋„๊ฐ’์ด ๋“ค์–ด๊ฐ€์„œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. `๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ`๋Š” **๋ช…ํ™•ํ•˜๊ฒŒ ๊ฐ์ฒด์˜ ๋„๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•ด ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์ด๋‚˜ ํ•„๋“œ ์ฐธ์กฐ ๋“ฑ์˜ ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ**๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•œ๋‹ค๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๊ณง๋ฐ”๋กœ ์›์ธ์„ ์ขํž ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - -* ์ฆ‰, 1๋ฒˆ์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜์— ๋„๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ ˆ๋Œ€๋กœ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ๊ฐ€ ๋‚  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์ผ 4 ๋ฒˆ `item.getPortal().getId()`์ด๋‚˜ 5๋ฒˆ `item.getId()`์ด ๋„์ด๋ผ๋ฉด ์ด๋Š” ๋„ ๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ์•„๋‹ˆ๋ผ ๋„๊ฐ’์„ `getMenuItems`๋ผ๋Š” **๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ญ์‹œ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์—†๋‹ค.** -* ๋ฌผ๋ก  `getMenuItem` ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ **ํ•ด๋‹น ์ธ์ž์— ๋Œ€ํ•œ ๋„์ฒดํฌ ์—†์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์˜ˆ์™ธ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ** ์ด ๊ฒฝ์šฐ์—” ์ ˆ๋Œ€๋กœ ํŠธ๋ ˆ์ด์Šค ์ƒ์— **๊ตต์€ ๊ธ€์ž๋กœ ํ‘œ์‹œ๋œ 603๋ฒˆ ์งธ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฟŒ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.** -* ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚จ์€ ๊ฐ€๋Šฅ์„ฑ์€ 2๋ฒˆ 'item'์ด ๋„์ด๊ฑฐ๋‚˜ 3๋ฒˆ 'item.getPortal()'์ด ๋„์ธ ๊ฒฝ์šฐ๋ฟ์ธ๋ฐ, 'item' ๋ณ€์ˆ˜๋Š” ์œ„์—์„œ ๋„์ฒดํฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 603๋ฒˆ ์งธ ์ค„์—์„œ ์ ˆ๋Œ€๋กœ ๋„๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‹ต์€ 3๋ฒˆ์ด ๋˜๋Š” ๊ฒƒ - -**์ฝ์–ด๋ณด๋ฉด ์ข‹์€ ๊ธ€** - -[๊ฐœ๋ฐœ์€ ์•”๊ธฐ๊ณผ๋ชฉ์ด ์•„๋‹™๋‹ˆ๋‹ค](https://okky.kr/questions/311337) - -**๋…ผ์™ธ Visual Studio์™€ Visual Studio Code** - -> ์Šคํƒ ํŠธ๋ ˆ์ด์Šค ๋ฅผ ์ฝ๋Š” ๋ฒ•์„ ์ฐพ๋‹ค๊ฐ€ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์ธ๋ฐ... ๋‘˜์€ ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ Visual Studio๋Š” IDE(ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ)์ด๋ฉฐ Visual Studio Code๋Š” Sublime Text ๋ฐ Atom๊ณผ ๊ฐ™์€ ๋ฆฌ์น˜ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋กœ ๋„๊ตฌ ๊ฐ„์˜ ์ฐจ์ด์ ์€ IDE์™€ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ ๊ทธ ์ด์ƒ์ด๋ผ๊ณ  ํ•œ๋‹ค. IDE๋Š” ์ฝ”๋“œ ์ž‘์„ฑ, ํŽธ์ง‘, ๋””๋ฒ„๊น… ๋ฐ ์‹คํ–‰์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ๋‚˜๊ฐ€์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•จ.. ๊นŠ๊ฒŒ ๊ณต๋ถ€ ์•ˆํ•˜๊ณ  ๋Œ๋ฆฌ๊ธฐ๋งŒ ํ•ด์„œ... ๋ชฐ๋ž๋‹ค. - -#### ๐ŸŠ ์ด๋Ÿฐ ์‹คํ—˜์„ ํ•  ๋•Œ ๋””๋ฒ„๊ฑฐ ์‹ญ๋ถ„ ํ™œ์šฉ - -1. ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ์ž ์‹œ ์ •์ง€์‹œํ‚ค๊ณ  ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ, ์Šคํƒ ํŠธ๋ ˆ์ด์Šค, ๋ณ€์ˆซ๊ฐ’ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. -2. ๋””๋ฒ„๊ฑฐ๋ฅผ ๋ถ™์—ฌ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œํ‚จ ํ›„ ์ฝ”๋“œ๊ฐ€ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ํ™•์ธ -3. ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋Š” ๋””๋ฒ„๊ฑฐ์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ์ค‘์ง€์‹œํ‚ค๋Š” ์ง€์ ์„ ์„ค์ •ํ•˜๋Š” ๋„๊ตฌ๋กœ ์ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ง€์ ์—์„œ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. - -**intellij์—์„œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ์„ค์ • ๋ฐฉ๋ฒ•** - -> IntelliJ IDEA๋ฅผ ์—ด๊ณ  ๋””๋ฒ„๊ทธํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ๋“œ - -1. ๋””๋ฒ„๊ทธํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. -2. ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋ ค๋Š” ์ค„์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๊ฐ€์ ธ๊ฐ‘๋‹ˆ๋‹ค. -3. ํ•ด๋‹น ์ค„์˜ ์™ผ์ชฝ ๋งˆ์ง„(๋ผ์ธ ๋„˜๋ฒ„ ๋ถ€๋ถ„)์„ ํด๋ฆญํ•˜๋ฉด ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š”, ํ•ด๋‹น ์ค„์„ ํด๋ฆญํ•œ ํ›„ `Ctrl + F8 (Windows/Linux)` ๋˜๋Š” `Command + F8 (Mac)`์„ ๋ˆ„๋ฅด๋ฉด ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”๋‰ด์—์„œ `Toggle Line Breakpoint`๋ฅผ ์„ ํƒํ•˜๋ฉด **๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๊ฐ€ ์„ค์ •**๋ฉ๋‹ˆ๋‹ค. -4. ์„ค์ •ํ•œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋Š” `๋นจ๊ฐ„ ๋™๊ทธ๋ผ๋ฏธ`๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. -5. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญํ•˜์—ฌ "Debug" ์˜ต์…˜์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ ์—๋””ํ„ฐ ์ƒ๋‹จ์˜ "Run" ๋˜๋Š” "Debug" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. -6. ํ”„๋กœ๊ทธ๋žจ์ด ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ์— ๋„๋‹ฌํ•˜๋ฉด ์‹คํ–‰์ด ์ผ์‹œ ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋””๋ฒ„๊ฑฐ ์ฐฝ์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋‹จ๊ณ„๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -#### ๐ŸŠ ๋””๋ฒ„๊ฑฐ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ฐ€๋”์€ ๋กœ๊ทธ๋‚˜ print๋ฅผ ๋„ฃ์–ด๋‘๋Š” ๊ฒƒ์ด ์ฝ”๋“œ์˜ ๋™์ž‘์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ• - -* ๋‹ค๋งŒ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ™์€ ๋ณต์žกํ•œ ์ƒํ™ฉ์—์„œ print๋ฌธ์„ ์ด์šฉํ•œ ๋””๋ฒ„๊น…์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์œ ์˜ - -#### ์‰ฝ์ง€๋งŒ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ• - -* ์›๋ž˜ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ์ˆ˜์ • ์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์‚ฌ์‹ค์„ ๋ˆˆ์— ๋„๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๋ฌธ์žฅ์„ ํ”„๋กœ๊ทธ๋žจ์ด ์ฒ˜์Œ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ์ถœ๋ ฅ - -### 6. ๋ฌธ์„œ ์ฝ๋Š” ์Šต๊ด€์€ ๋ชธ์— ๋ฐฐ์•ผ ํ•œ๋‹ค. - -> ์ฝ์„ ์ž๋ฃŒ๋Š” ๋ฌด๊ถ๋ฌด์ง„ํ•˜๋‹ค. ๋‹ค๋งŒ ์ด ์ž๋ฃŒ๋“ค์„ ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ์ฝ์„ ์ƒ๊ฐ์€ ํ•˜์ง€๋ง์ž. - -1. ๋จผ์ € ํŒ€๋ฌธ์„œ์™€ ์„ค๊ณ„ ๋ฌธ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ - -* ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ๋™์ž‘ํ•˜๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค. -* ํŠนํžˆ **ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„์™€ ์ปจํ…์ŠคํŠธ**์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ๋”์šฑ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ž -* ๊ทธ๋Ÿฌ๋ฉด ์„œ๋ธŒ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋” ๊นŠ๊ฒŒ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. - -> #### ๐ŸŠ ์ž ๊น!! ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„(trade-off)์™€ ์ปจํ…์ŠคํŠธ(context)๋ž€? -> -> * ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„ : ๊ฐ์ฒด์˜ ์–ด๋Š ํ•œ ๋ถ€๋ถ„์„ ํ’ˆ์งˆ์„ ๋†’์ด๊ฑฐ๋‚˜ ๋‚ฎ์ถ”๋Š” ๋ฐ ๋‹ค๋ฅธ ํ•œ์ชฝ์˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ƒํ™ฉ EX. ๊ฐœ๋ฐœ์˜ ์‹œ๊ฐ„ UP => ์™„์„ฑ๋„ UP => ๋น„์šฉ UP **์ ์ ˆํ•œ ์ตœ์ ์˜ ํƒ€ํ˜‘ ํ•„์š”** -> * ์ปจํ…์ŠคํŠธ : ์ฝ”๋“œ๋‚˜ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜๋Š” ํ™˜๊ฒฝ, ์–ด๋–ค ํŠน์ • ์ž‘์—…ํ•œ ๋‹จ์œ„ ์ˆ˜ํ–‰ํ•œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ์ •๋ณด, ์ค€๋น„์‚ฌํ•ญ, ๊ทธ ๊ฒฝ๊ณ„์˜ ์ง€์นจ - -2. ์ฝ”๋“œ๋Š” ์†Œ์„ค์ฒ˜๋Ÿผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ญ‰ ์ฝ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. **IDE**๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ์˜ ์ด๊ณณ์ €๊ณณ์„ ํ›‘์–ด๋ณด์ž. ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ๋Š” **์ฝ”๋“œ์˜ ํ๋ฆ„๊ณผ ์ƒํƒœ๋ฅผ ๋‹ค์ด์–ด๊ทธ๋žจ**์œผ๋กœ ๊ทธ๋ ค๋ณด์ž. ์ฝ”๋“œ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŒŒํ—ค์ณ๋ณด์ž. ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€๋„ ์ž˜ ์‚ดํŽด๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด์„œ ํŒ€์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์šฉ์–ด๋„ ๊ผผ๊ผผํžˆ ํ™•์ธํ•˜์ž. ๊ทธ๋ž˜์•ผ ๋‚ด๋ถ€ ์˜์‚ฌ์†Œํ†ต์ด ์›ํ• ํ•ด์ง„๋‹ค. -3. ์•ž์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ์€ ํ‹ฐ์ผ“(ticket)์ด๋‚˜ ์ด์Šˆ(issue)๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. - -### 7. ๊ทธ ์™ธ - -**1. ๋ฐœํ‘œ ์˜์ƒ์„ ์ฐพ์•„์„œ ์ฐพ์•„๋ณด์ž** - -* ๋‹ค๋งŒ, ์ˆ˜๋™์ ์ธ ํƒœ๋„๋Š” ๊ธˆ๋ฌผ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ณ  ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์šฉ์–ด ์ฐพ์•„๋ณด๊ธฐ - -**2. ๋•Œ๋กœ๋Š” ๋ฐ‹์—…๊ณผ ์ปจํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์—ฌํ•˜์ž.** - -* ๋•Œ๋•Œ๋กœ ์ฐธ์„์€ ์ข‹์ง€๋งŒ ๋„ˆ๋ฌด ์žฆ์€ ์ฐธ์„์€ ๊ธˆ๋ฌผ์ด๋‹ค. - -**3. ์‹œ๋‹ˆ์–ด ์—”์ง„๋‹ˆ์–ด์˜ ์ฒดํ—˜ํ•˜๊ณ  ํ˜‘์—…ํ•˜์ž**. - -* ์ฒดํ—˜ํ•˜๊ธฐ(shadowing) : ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๊ทธ๋ฆผ์ž์ฒ˜๋Ÿผ ๋”ฐ๋ผ ๋‹ค๋‹ˆ๋ฉฐ, ์ผ์ • ์ „ ํ›„์— ๊ณ„ํš๊ณผ ํšŒ๊ณ  ์‹œ๊ฐ„ ๋งˆ๋ จํ•˜๊ธฐ -* ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ(pair programming) : ๋‘ ๋ช…์˜ ์—”์ง„๋‹ˆ์–ด๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ํ•จ๊ป˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ƒ๋Œ€์—๊ฒŒ ๋ญ”๊ฐ€๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. - -**4. ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ ํ™œ๋™์—์„œ๋„ ๋ฐฐ์›€์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.** - -* ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์ž. -* ๋ฐฐ์›Œ์•ผ ํ•  ์†Œ์žฌ๋ฅผ ๊ทผ๊ฑฐ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์€ ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. \*\*๋ชฉํ‘œ๊ฐ€ ์žˆ์–ด์•ผ ๋” ์˜ค๋ž˜ ๋ชฐ๋‘ํ•˜๊ณ  ๋” ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๋ณธ์งˆ์ ์ธ ๋™๊ธฐ๊ฐ€ ์Šค์Šค๋กœ์—๊ฒŒ ๋ถ€์—ฌ๋œ๋‹ค. \*\* -* ๋Œ€์ฒด๋กœ ํšŒ์‚ฌ์—๋Š” ์—…๋ฌด ์™ธ ํ™œ๋™์— ๋Œ€ํ•œ ๊ทœ์ •์ด ๋‚˜์™€์žˆ์œผ๋‹ˆ ํšŒ์‚ฌ ์ •์ฑ… ์ฝ๊ธฐ ํ•„์ˆ˜ - -**5. ์ œ๋Œ€๋กœ ์งˆ๋ฌธํ•˜๊ธฐ** - -* ์งˆ๋ฌธ์€ ๋ฐฐ์›€์— ์žˆ์–ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. -* ํŒ€ ๋™๋ฃŒ์—๊ฒŒ ๋ฏผํ๊ฐ€ ๋ ๊นŒ ์‹ถ์–ด ๋ชจ๋“  ๊ฒƒ์„ ํ˜ผ์ž ์•Œ์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ๋น„ํšจ์œจ์ ์ด๋‹ค. -* ์งˆ๋ฌธํ•  ๋•Œ๋Š” ๋จผ์ € ์Šค์Šค๋กœ ์ฐพ์•„๋ณด๊ณ  ๋ช…ํ™•ํžˆ ์งˆ๋ฌธํ•˜๋ฉฐ, ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ๋“ค์„ ๋•Œ๊นŒ์ง€ ์ ์ ˆํ•œ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์„ธ ๋‹จ๊ณ„๋ฅผ ๋ฐŸ์•„๊ฐ€๊ธธ ๋ฐ”๋ž€๋‹ค. - -**6. ์Šค์Šค๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž** - -> ์•„๋ฌด๋Ÿฐ ๋‹จ์„œ๋„ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์‹คํ—˜์„ ํ†ตํ•ด ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•ด๋ณด์ž. _**์–ด๋””๋ฅผ ์‚ดํŽด๋ดค๋Š”์ง€ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์™œ ์‹œ๋„ํ–ˆ๋Š”์ง€, ๊ฒฐ๊ณผ๋Š” ์–ด๋• ๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šด ๊ฒƒ์€ ๋ฌด์—‡์ธ์ง€ ๋ชจ์กฐ๋ฆฌ ๊ธฐ๋กํ•˜์ž.**_ - -* ๋ฌด์ž‘์ • ์ธํ„ฐ๋„ท๋งŒ ๋’ค์ง€๋Š” ๋ฐฉ๋ฒ•์€ ์˜ณ์ง€ ์•Š๋‹ค. ๋งŒ์ผ ๊ถ๊ธˆํ•œ ์ ์ด ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ผ๋ฉด ๋ฌธ์ œ๋ฅผ ์ž…์ฆํ•˜๋Š” `๋‹จ์œ„ ํ…Œ์ŠคํŠธ`๋กœ ๋ฐ”๋€Œ๋ณด์ž. -* ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋‚˜ ์ฑ„ํŒ… ๊ทธ๋ฃน์„ ๋’ค์ ธ๋ณด์ž - -**7. ์ œํ•œ ์‹œ๊ฐ„์„ ์ •ํ•˜์ž** - -> ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํ•œ์„ ์ •ํ•ด๋‘์ž. - -* ์–ธ์ œ๊นŒ์ง€ ๋‹ต์„ ๊ตฌํ•ด์•ผ ํ•  ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ , ์งˆ๋ฌธ์„ ํ•˜๊ณ  ๋‹ต์„ ์ฐพ๊ณ  ๋ฐฐ์šด ๊ฒƒ์„ ํ† ๋Œ€๋กœ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์„ ํ™•๋ณดํ•ด์ฃผ์ž. ์ œํ•œ์‹œ๊ฐ„์„ ๋‹ค ์ป๋Š”๋ฐ ์•„์ง ๋‹ต์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์งˆ๋ฌธํ•˜์ž. -* ์ œํ•œ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์€ ์Šค์Šค๋กœ์˜ ๋…ธ๋ ฅ์ด ์ œ๋Œ€๋กœ ์ง„์ฒ™์„ ์ด๋ฃฐ ๊ฒฝ์šฐ์—๋งŒ ํ—ˆ์šฉํ•˜์ž. - -**8. ์ž์‹ ์ด ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•˜์ž** - -* ๊ธฐ๋กํ•ด๋‘” ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๋ถ„์ด **์‹œ๋„ํ•ด๋ณธ ๋ฐฉ๋ฒ•๊ณผ ์•Œ์•„๋‚ธ ๋‚ด์šฉ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์š”์•ฝํ•˜์ž.** -* ์งˆ๋ฌธ์„ ํ•˜๋ ค๋ฉด, ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•์„ ์ „๋‹ฌํ•˜๋ฉฐ, ๋„์›€์„ ์š”์ฒญํ•œ๋‹ค. ๋˜ํ•œ ๋ฌธ์ œ์˜ ์˜ํ–ฅ๋ ฅ๊ณผ ๊ธด๊ธ‰๋„์— ๋Œ€ํ•ด์„œ ์ฒจ์–ธํ–ˆ๋‹ค. - -**9. ๋™๋ฃŒ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ๋ง์ž** - -* ๊ฐ์ž์˜ ์—…๋ฌด์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋ฐฉํ•ดํ•˜์ง€ ๋ง์ž - -**10. ๋น„๋™๊ธฐ์‹ ๋ฉ€ํ‹ฐ์บ์ŠคํŒ… ์˜์‚ฌ์†Œํ†ต์„ ์‹œ๋„ํ•˜์ž.** - -* ์งˆ๋ฌธ์€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ(๋ฉ€ํ‹ฐ์บ์ŠคํŠธ)์ด ๊ฐ์ž์˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ(๋น„๋™๊ธฐ์‹ = ๋ฐ”๋กœ ๋‹ตํ•˜์ง€ ์•Š๊ณ  ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ) ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ์˜ฌ๋ฆฌ์ž - -**11. ๋™๊ธฐ์‹ ์š”์ฒญ์€ ํ•œ ๋ฒˆ๋งŒ ๋ณด๋‚ด์ž** - -### 8. ์„ฑ์žฅ์˜ ์žฅ์• ๋ฌผ์„ ๊ทน๋ณตํ•˜์ž. - -#### ๐ŸŠ ๊ฐ€๋ฉด ์ฆํ›„๊ตฐ - -1. ๋Œ€๋ถ€๋ถ„์˜ ์‹ ์ž… ์—”์ง€๋‹ˆ์–ด๋Š” ์˜์‹์  ๋Šฅ๋ ฅ๋ถ€์กฑ ์ƒํƒœ์—์„œ ์‹œ์ž‘ -2. ๊ฐ„ํ˜น ์Šค์Šค๋กœ์—๊ฒŒ ๋„ˆ๋ฌด ์—„๊ฒฉํ•ด์ง€๊ธฐ๋„ ํ•œ๋‹ค. -3. ์ž๊ธฐ ์Šค์Šค๋กœ์— ๋Œ€ํ•œ ๋ถˆ์‹ ์€ ๋ˆ„๊ตฌ๋‚˜์—๊ฒŒ ์žˆ๋Š” ๋ณดํŽธ์ ์ธ ํ˜„์ƒ์ด๋ผ๋Š” ์ ์„ ์šฐ์„  ์—ผ๋‘์— ๋‘์ž -4. ์ž๊ธฐ ์ธ์‹์€ ๋„์›€์ด ๋œ๋‹ค. -5. ๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ฌ์„ฑํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฑด ์‹ค์ œ๋กœ ์ผ์„ ์ž˜ ํ•ด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์ด์ง€, ๊ทธ์ € ์šด์ด ์ข‹์•˜๊ธฐ ๋•Œ๋ญ”์ด ์•„๋‹ˆ๋‹ค. ์นญ์ฐฌ๊ณผ ์„ฑ๊ณผ๋ฅผ ์• ์จ ์™ธ๋ฉดํ•˜์ง€๋ง๊ณ  ์•„๋ฌด๋ฆฌ ์ž‘์€ ์ผ์ด๋ผ๋„ ๊ธฐ๋กํ•ด๋‘์ž -6. ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๊ฒƒ๋„ ๋„์›€์ด ๋œ๋‹ค. - -#### ๐ŸŠ ๋”๋‹ ํฌ๋ฃจ๊ฑฐ ํ˜„์ƒ - -1. ์Šค์Šค๋กœ๋ฅผ ๊ณผ๋Œ€ํ‰๊ฐ€ํ•˜๋Š” ์ธ์ง€์  ํŽธ๊ฒฌ์„ ๊ฐ–๋Š” ๊ฒƒ์ด๋‹ค. -2. ์ž์‹ ์ด ๋ญ˜ ๋ชจ๋ฅด๋Š”์ง€๋ฅผ ๋ชจ๋ฅธ๋‹ค. -3. ์˜์‹์ ์œผ๋กœ ํ˜ธ๊ธฐ์‹ฌ์„ ๊ณ„๋ฐœํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ž. -4. ๊ทธ๋ฆฌ๊ณ  ์ž์‹ ์ด ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์Œ์„ ์ธ์ •ํ•˜์ž. -5. ์ž์‹ ์ด ์กด๊ฒฝํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๋ฅผ ์ฐพ์•„ ์—ฌ๋Ÿฌ๋ถ„์ด ์ž˜ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋ฌผ์–ด๋ณด๊ณ  ๊ฒฝ์ฒญํ•˜์ž - -### 9. ๊ฐœ๋ฐœ์ž์˜ ํ•„์ˆ˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ - -| โญ• ์ด๊ฒƒ๋งŒ์€ ์ง€ํ‚ค์ž | โŒ ์ด๊ฒƒ๋งŒ์€ ํ”ผํ•˜์ž | -| ----------------------------------- | ----------------------- | -| ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์ž์ฃผ ์‹คํ—˜ํ•˜์ž | ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์ฝ”๋“œ๋งŒ ์ฐ์–ด๋‚ด์„œ๋Š” ์•ˆ๋œ๋‹ค. | -| ์„ค๊ณ„๋ฌธ์„œ์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ์ฝ”๋“œ๋ฅผ ์ฝ์ž | ์œ„ํ—˜๊ณผ ์‹คํŒจ๋ฅผ ๋‘๋ ค์›Œํ•˜์ง€ ๋ง์ž | -| ๋ฐ‹์—…, ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ, ๊ด€์‹ฌ ๊ทธ๋ฃน, ๋ฉ˜ํ† ์‹ญ ํ”„๋กœ๊ทธ๋žจ์— ์ฐธ์—ฌํ•˜์ž | ๋„ˆ๋ฌด ์žฆ์€ ์ปจํผ๋Ÿฐ์Šค ์ฐธ์„์€ ๊ธˆ๋ฌผ์ด๋‹ค. | -| ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ/๋น„๋™๊ธฐ์‹์œผ๋กœ ์˜์‚ฌ์†Œํ†ตํ•˜์ž | ์งˆ๋ฌธํ•˜๊ธฐ๋ฅผ ๋‘๋ ค์›Œํ•˜์ง€ ๋ง์ž. | -| ์ธํ„ฐ๋ทฐ๋‚˜ ๋ฉด์ ‘ ๊ธด๊ธ‰๋Œ€์‘ ๊ต๋Œ€ ์—…๋ฌด๋ฅผ ๋”ฐ๋ผ ๋‹ค๋…€๋ณด์ž | | - -## โ— ํšŒ๊ณ  - -> ์ง€๊ธˆ ๊ธ€์„ ์“ฐ๊ณ  ์žˆ๋Š” ์‹œ์ ์—๋Š” 3์žฅ๊นŒ์ง€ ์ฝ์–ด๋ดค๋Š”๋ฐ ํšŒ์‚ฌ์— ๊ฐ€์„œ ์ฒ˜์Œ ํ—ค๋งค๋Š” ์‚ฌ๋žŒ์ด๋ž‘ ๊ณต๋ถ€ํ•˜๋Š” ๋ฐฉํ–ฅ์„ ๋ชจ๋ฅด๊ฒ ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. _**ํŠนํžˆ ์—๋Ÿฌ ๋‚ฌ์„ ๋•Œ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ๋ณด๋Š” ๊ฒƒ ๊ตญ๋น„์—์„œ๋„ ๋Œ€๋ถ€๋ถ„ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฑธ ๋ณด๋Š” ๊ฑฐ ์–ด๋ ค์›Œ ํ•œ๋‹ค. ์–ด ์™œ ์•ˆ๋ผ..? ์™œ..? ์—ฌ๊ธฐ์„œ ๋์ด๊ณ  ๋ฌด์Šจ ์ด์œ ์ธ์ง€ ์ฝ˜์†”์„ ๋ณผ๋ ค๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค ๊ทธ๊ฑด ๋‚˜๋„ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค.**_ - -๊ฑฐ๊ธฐ์„œ ๋ณด๊ณ  ์ด์œ  ๋ฟ ์•„๋‹ˆ๋ผ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ nullpointException์ด ์ •ํ™•ํžˆ ์–ธ์ œ ๋‚˜๋Š” ์ง€ ๋“ฑ์„ ์•Œ์•„๋‘๋Š” ๊ฒƒ ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค ์ƒ๊ฐํ•œ๋‹ค. diff --git a/developLog/book/onboarding/3.md b/developLog/book/onboarding/3.md deleted file mode 100644 index 4d1131c..0000000 --- a/developLog/book/onboarding/3.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -description: ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 3์žฅ ---- - -# ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 3์žฅ - -![](https://velog.velcdn.com/images/prettylee620/post/af06762e-057f-4f79-9e78-1b82d5aedf25/image.png) - -## ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ถค์„ - ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ์ž„ํ•˜๋Š” ์ž์„ธ - -> ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ์„ ์ฝ๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ด๋ฉฐ, ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - -#### ๐Ÿ‹ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ž€? - -* ์œ ์‚ฐ, ์‚ฐ๋ฌผ์ด ๋œ ์ฝ”๋“œ -* ๊ฒŒ๋ฐœ : ๊ธฐ์ˆ ์ ์ธ ๋ถ€๋ถ„ OS, ๋” ์ด์ƒ ์“ฐ๊ธฐ ํž˜๋“ค๊ฑฐ๋‚˜ ํ™”๋‚˜๊ฒŒ ํ•˜๋Š” ์ฝ”๋“œ - -1. ๋‹ค๋ฅธ์ฝ”๋“œ์™€์˜ ๊ฐœ์—ฐ์„ฑ์„ ๋ฌด์‹œํ•œ ์ฑ„ Due Date๋งŒ ๋งž์ถฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ -2. ์ฝ”๋“œ์˜ ์ข…์†์„ฑ, ๋””ํŽœ๋˜์Šค๋ฅผ ๋‚ฎ์ถ”๋ ค๋Š” ๋…ธ๋ ฅ์ด 1๋„ ์—†๋Š” ์ฝ”๋“œ -3. ์ฝ”๋ฉ˜ํŠธ ๋“ฑ์„ ์ „ํ˜€ ๋‚จ๊ธฐ์ง€ ์•Š์•„ ๋” ์ด์ƒ ์ˆ˜์ •, ๋ณด์™„์ด ์–ด๋ ค์šด ์ฝ”๋“œ -4. ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ํ•จ์ˆ˜ ๋‚˜์•„๊ฐ€ ๋ชจ๋“ˆ ์ž์ฒด๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ํฐ ์ฝ”๋“œ, **๊ฐœ๋ฐœ ์ฝ”๋“œ๋Š” ์˜์กด์„ฑ์ด ๋‚ฎ์•„์•ผ ํ•œ๋‹ค.** - -### 1. ๋“ค์–ด๊ฐ€๊ธฐ - -> ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๋งˆ์น˜ ์•„๋ฅผ๋ฅด์˜ ์›ํ˜• ๊ฒฝ๊ธฐ์žฅ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. _**ํ•œ ์„ธ๋Œ€๊ฐ€ ์—ฌ๋Ÿฌ ๊ณ„์ธต์„ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜์ค‘์—๋Š” ๋˜ ๋ฐ”๋€๋‹ค.**_ ํ•œ ์„ธ๋Œ€๊ฐ€ ์—ฌ๋Ÿฌ ๊ณ„์ธต์„ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜์ค‘์—๋Š” ๋˜ ๋ฐ”๋€๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ์ด ์ฝ”๋“œ์— ์†์„ ๋Œ„๋‹ค. ํ…Œ์ŠคํŠธ์— ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„์ด ์žˆ๋”๋‚˜ ์˜ค๋ž˜ ์ „์˜ ๊ฐ€์„ค์„ ๊ฐ•์ œํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€ํ™”๋Š” ์ฝ”๋“œ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹๊ณผ ์–ฝํ˜€ ์žˆ๋‹ค. - -### 2. ์†Œํ”„ํŠธ์›จ์–ด ์—”ํŠธ๋กœํ”ผ๋Š” ๋Š˜์–ด๋‚˜๊ฒŒ ๋งˆ๋ จ์ด๋‹ค. - -#### ๐Ÿ‹ ์†Œํ”„ํŠธ์›จ์–ด ์—”ํŠธ๋กœํ”ผ - -* ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. -* ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์“ด ์ฝ”๋“œ๋ฅผ ์ดํ•ด๋ชปํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์ƒ๊ธด๋‹ค. -* ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. - -#### ๐Ÿ‹ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• - -* **์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ๋ฒ„๊ทธ ํƒ์ง€ ๋„๊ตฌ**๋Š” ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. -\*\* ์ฝ”๋“œ ๋ฆฌ๋ทฐ\*\* ์—ญ์‹œ ์ง€์‹์„ ์ „ํŒŒํ•˜๊ณ  ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. -* ์ง€์†์ ์ธ\*\* ๋ฆฌํŒฉํ„ฐ๋ง\*\*์„ ํ†ตํ•ด ์—”ํŠธ๋กœํ”ผ๋ฅผ ๋‚ฎ์ถœ ์ˆ˜๋„ ์žˆ๋‹ค. - -### 3. ๊ฒฐ์ฝ” ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„ - -#### ๐Ÿ‹ ๊ธฐ์ˆ  ๋ถ€์ฑ„ - -* ์†Œํ”„ํŠธ์›จ์–ด ์—”ํŠธ๋กœํ”ผ๋ฅผ ๊ฐ€์ค‘์‹œํ‚ค๋Š” ์ฃผ์š” ์š”์ธ -* ๊ธฐ์กด ์ฝ”๋“œ์˜ ๋‹จ์ ์„ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋‚˜์ค‘์— ๋ฏธ๋ค„๋‘” ์ž‘์—…์„ ๋งํ•œ๋‹ค. -* ์ฐจ์„ ์ฑ…์„ ์„ ํƒํ•  ์ˆ˜๋ก ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ ์ฐจ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉฐ, ๋น„์šฉ ๋˜ํ•œ ์ ์  ๋Š˜์–ด๋‚œ๋‹ค. -* ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋Š” ์ˆ˜ ๋งŽ์€ ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์‚ฐ์žฌํ•ด ์žˆ๋‹ค. - -#### ๐Ÿ‹ ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋งคํŠธ๋ฆญ์Šค - -\ -1\. **์‹ ์ค‘ํžˆ ๊ณ ๋ฏผํ•˜๋‹ค ์˜๋„์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ถ€์ฑ„**๋Š” ๋ณดํŽธ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„ ์œ ํ˜•์ด๋‹ค. ๋‚˜์ค‘์— ํŒ€์ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ›ˆ๋ จ๋œ๋ถ€์ฑ„๋ผ๋ฉด ์ด๋Š” ์ข‹์€ ๋ถ€์ฑ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 2.\*\* ์‹ ์ค‘ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์˜๋„์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ถ€์ฑ„\*\*๋Š” ์ฃผ๋กœ ํŒ€์ด ์ถœ์‹œ์ผ ์••๋ฐ•์„ ๋ฐ›๋Š” ์ƒํ™ฉ์—์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋ณดํ†ต ์ผ๋‹จ์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€๋“ค์–ด ๊ฐ„๋‹ค. 3. **์‹ ์ค‘ํ•˜์ง€๋„ ์˜๋„์น˜๋„ ์•Š๋Š” ๋ถ€์ฑ„**๋Š” ์•Š์•˜๋˜ ๋ถ€์ฑ„๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ฏธ์ง€, ๋ชฐ๋ผ์„œ ๋ชจ๋ฅด๋Š” ๊ฒƒ๋“ค ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค. ๊พธ์ค€ํ•œ ํ•™์Šต๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค, 4. **์‹ ์ค‘ํ–ˆ์ง€๋งŒ ์˜๋„์น˜ ์•Š๋Š” ๋ถ€์ฑ„**๋Š” ์„ฑ์žฅ ๊ณผ์ •์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฐ๊ณผ๋‹ค. ๋‹จ์ˆœํžˆ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ œ๋Œ€๋กœ ์ผ์„ ํ•˜์ง€ ์•Š์•„์„œ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ œ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋Š” ๊ณผ์ •์ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…ํŠธ๊ฐ€ ์„ฑ์žฅํ•˜๋Š” ๊ณผ์ • ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋‹ค. - -| | ์‹ ์ค‘ํ•˜์ง€ ๋ชปํ•œ ์„ ํƒ | ์‹ ์ค‘ํ•œ ์„ ํƒ | -| --------- | ------------- | --------------------- | -| ์˜๋„ํ•œ ์„ ํƒ | ์„ค๊ณ„ํ•  ์‹œ๊ฐ„์ด ์—†์–ด์š” | ์ผ๋‹จ ์ถœ์‹œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ๋Œ€์ฒ˜ํ•ฉ์‹œ๋‹ค. | -| ์˜๋„์น˜ ์•Š์€ ์„ ํƒ | ๊ณ„์ธตํ™”๊ฐ€ ๋„๋Œ€์ฒด ๋ญ”๊ฐ€์š”? | ๋ญ˜ ์‹ค์ˆ˜ํ–ˆ๋Š”์ง€ ์ด์   ์•Œ๊ฒ ๋„ค์š” | - -### 4. ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ƒํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ• - -* ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ฌ๋™์•ˆ ์˜จ์„ธ์ƒ์ด ๋ฉˆ์ถฐ์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ •๋ฆฌํ•˜๊ณ  ์กฐ๊ธˆ์”ฉ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜์ž. ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ž‘๊ณ  ๋…๋ฆฝ์ ์ธ ์ปค๋ฐ‹๊ณผ PR(ํ’€ ๋ฆฌํ€˜์ŠคํŠธ)๋กœ ๋งŒ๋“ค์ž -* ๋ถ€์ฑ„๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ถœ์‹œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ณ  ๋ถ€์ฑ„๋ฅผ ์Œ“์•„๋‘๋ฉด ์ถœ์‹œ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค. - -#### ๐Ÿ‹ ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ„ฐ๋ง - -* ๋งŒ์ผ ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ„ฐ๋ง์ด๋‚˜ ์žฌ์ž‘์„ฑ์„ ์ œ์•ˆํ•˜๋ ค ํ•œ๋‹ค๋ฉด ํŒ€๊ณผ๋จผ์ € ์˜๋…ผํ•ด๋ณด์ž - -> 1. ์ƒํ™ฉ์„ ์‚ฌ์‹ค ๊ทธ๋Œ€๋กœ ์„ค๋ช…ํ•œ๋‹ค. -> 2. ๋ถ€์ฑ„์˜ ์œ„ํ—˜๊ณผ ๋น„์šฉ์„ ๊ธฐ์ˆ ํ•œ๋‹ค. -> 3. ํ•ด๊ฒฐ์ฑ…์„ ์ œ์•ˆํ•œ๋‹ค. -> 4. (๋ถ€์ฑ„๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๋กํ•ด) ๋Œ€์•ˆ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•œ๋‹ค. -> 5. ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋”ฐ์ ธ๋ณธ๋‹ค. - -### 5. ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๊ณ ํ†ต์„ ์กฐ๊ธˆ์ด๋ผ๋„ ์ค„์ด๋ ค๋ฉด - -1. ์ฝ”๋“œ ๋ณ€๊ฒฝ์€ ์ƒˆ๋กœ์šด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅธ ์ฐจ์›์˜ ๋ฌธ์ œ์ด๋‹ค. -2. ๊ธฐ์กด์˜ ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์ด๋ฉฐ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์˜ ์‚ฌ๊ณ  ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ  ๊ธฐ์กด ์Šคํƒ€์ผ๊ณผ ํŒจํ„ด์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ - -### 6. ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์ž - -> ์ฒ˜์Œ 4๊ฐœ์˜ ๊ณผ์ •์€ ๋ฐญ์— ์”จ๋ฅผ ๋ฟŒ๋ฆฌ๋Š” 5๋ฒˆ์งธ ๊ณผ์ •์ „์— ์ฃผ๋ณ€์„ ์ •๋ฆฌํ•˜๊ณ  ์šธํƒ€๋ฆฌ๋ฅผ ์น˜๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž. - -#### ๐Ÿ‹ 1) ๋ณ€๊ฒฝ ์ง€์ ์„ ํ™•์ธํ•˜์ž. - -* ๋ฐญ์— ์”จ๋ฅผ ๋ฟŒ๋ฆฌ๋Š” ์€์œ ์— ๋น—๋Œ€์–ด ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ง€์ ์ด ๋ฐ”๋กœ ์”จ๋ฅผ ๋ฟŒ๋ฆฌ๋Š” ์ง€์ ์ด๋‹ค. - -#### ๐Ÿ‹ 2) ํ…Œ์ŠคํŠธ ํ•  ์ง€์ ์„ ํ™•์ธํ•˜์ž - -* ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ง„์ž…์ , ์ฆ‰ ํ…Œ์ŠคํŠธ๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ณ  ๊ฐ’์„ ๋„ฃ์–ด๋ณด๋Š” ๋ถ€๋ถ„์ด๋‹ค. -* ํ…Œ์ŠคํŠธ ์ง€์ ์€ _**๋ณ€๊ฒฝ ์ „์— ํ˜„์žฌ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋ฉฐ ์ด ์ง€์ ์„ ์ด์šฉํ•ด ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ ํ…Œ์ŠคํŠธ**_ - -#### ๐Ÿ‹ 3) ์˜์กด์„ฑ์„ ๋‚˜๋ˆˆ๋‹ค. - -> ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ๊ณผ์ •์œผ๋กœ ์กฐ๊ธˆ์”ฉ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋˜, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์•ˆ๋จ, ํ…Œ์Šค๋Š” ์ž์ฃผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋นจ๋ฆฌ ๋™์ž‘ํ•˜๊ฒŒ ๋งŒ๋“ค์ž! - -* ํ…Œ์ŠคํŠธ ์ง€์ ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์˜์กด์„ฑ์„ ๋‚˜๋ˆŒ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. -* ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” `์˜์กด์„ฑ` : ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ์ฒด๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜๋ฏธ -* `์˜์กด์„ฑ์„ ๋‚˜๋ˆˆ๋‹ค` : ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊พผ๋‹ค๋Š” ๋œป - -**์˜์กด์„ฑ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•** - -1. ํฌ๊ณ  ๋ณต์žกํ•œ ๋ฉ”์†Œ๋“œ๋Š” **๋” ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋‚˜๋ˆ ์„œ ๊ฐ๊ธฐ ๋ถ„๋ฆฌ๋œ ๊ธฐ๋Šฅ์ด ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ** ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. -2. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด์„œ, ๋ณต์žกํ•œ ๊ฐ์ฒด๋ฅผ ์™„์ „ํ•˜์ง€๋Š” ์•Š์•„๋„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ์—๋Š” **์ถฉ๋ถ„ํ•œ ๋‹จ์ˆœ ๊ตฌํ˜„์ฒด๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•**์„ ๋งˆ๋ จํ•œ๋‹ค. -3. ์‹œ๊ฐ„์˜ ํ๋ฆ„๊ฐ™์ด ์ œ์–ดํ•˜๊ธฐ ์–ด๋ ค์šด ์‹คํ–‰ํ™˜๊ฒฝ์„ ์‹œ๋ฌผ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…์‹œ์  ์ œ์–ด ์ง€์  ์ฃผ์ž… - -**์ข€ ๋” ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ์ ‘๊ทผ์ œ์–ด์ž ๋ณ€๊ฒฝํ•˜์ง€ ๋ง์ž** - -* `์บก์Šํ™”`์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€ - -#### ๐Ÿ‹ 4) ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ - -> ์˜์กด์„ฑ์„๋‚˜๋ˆ„๊ณ  ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜๋ฉด์„œ ๊ธฐ์กด ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ - -* ์ž๋™ ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์‚ฌ์šฉ ๊ณ ๋ ค\[6์žฅ์— ์ž์„ธํžˆ ๋‚˜์˜จ๋‹ค๊ณ  ํ•จ] - -#### ๐Ÿ‹ 5) ์ฝ”๋“œ ๋ณ€๊ฒฝ - -### 7. ์ฝ”๋“œ๋Š” ์ฒ˜์Œ๋ณด๋‹ค ๋” ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์ž - -> ์ด๋ฆ„์ด ๋„ˆ๋ฌด ๊ธด ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค, ์ค‘๋ณต ์ฝ”๋“œ, ๋„ˆ๋ฌด ๋งŽ์€ ๋ถ„๊ธฐ๋‚˜ ๋ฃจํ”„, ๋„ˆ๋ฌด ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„์ฃผ๋Š” \*\*๋ฆฐํ„ฐ(linter)๋‚˜ ์ฝ”๋“œ ํ’ˆ์งˆ ๋„๊ตฌ๊ฐ€ ๋งŽ์Œ \*\* ๊ด€๋ จ ๋งํฌ : [์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐ์‚ฌ๋ฅผ ์œ„ํ•œ 9๊ฐ€์ง€ ์ตœ๊ณ ์˜ ๋„๊ตฌ](https://hashdork.com/ko/%EA%B0%90%EC%82%AC-%EC%BD%94%EB%93%9C-%ED%92%88%EC%A7%88-%EA%B4%80%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%B5%9C%EA%B3%A0%EC%9D%98-%EB%8F%84%EA%B5%AC/) ๊ด€๋ จ ๋งํฌ : [linter](https://www.testim.io/blog/what-is-a-linter-heres-a-definition-and-quick-start-guide/) - -1. ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ์ฃผ๋ณ€ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜์ž. -2. \_**์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ปค๋ฐ‹์€ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ปค๋ฐ‹๊ณผ ๊ตฌ๋ถ„**\_ํ•˜์ž. -3. ์ปค๋ฐ‹์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฆฌ๋ทฐ์—๋„ ์ข‹์Œ - -#### ๐Ÿ‹ ์ฝ”๋“œ ์•…์ทจ - -* ๋ฒ„๊ทธ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ -* ์ด ์ฝ”๋“œ ์ƒ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋‚˜ - -```java -if(a ๋ณ€๊ฒฝํ•œ ์ฝ”๋“œ๋Š” ๊นƒ๊ณผ ๊น‰์€ ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ์— ์ปค๋ฐ‹ํ•ด์•ผ ํ•œ๋‹ค. - -#### ๐Ÿ‹ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ผ์ฐ ๊ทธ๋ฆฌ๊ณ  ์ž์ฃผ ์ปค๋ฐ‹ - -* ์ปค๋ฐ‹์„ ์ž์ฃผํ•˜๋ฉด **์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ** ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•ด๊ฐ€๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๋ณ€๊ฒฝ์„ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์›๊ฒฉ ๋ฐฑ์—…์œผ๋กœ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ -* ํ•˜์ง€๋งŒ\*\* ์˜๋ฏธ ์—†๋Š” ๋ฉ”์„ธ์ง€๋“ค์€ ๋ฆฌ๋ทฐ ์š”์ฒญ ์ „ ๋ธŒ๋žœ์น˜๋ฅผ\*\* `๋ฆฌ๋ฒ ์ด์Šค(rebase)`ํ•˜๊ฑฐ๋‚˜ ์ปค๋ฐ‹์„ `์Šคํ€ด์‹œ(squash)`ํ•ด์„œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๋ช…๋ฃŒํ•˜๊ฒŒ ์ „๋‹ฌ -* ๋ฆฌ๋ฒ ์ด์Šค : ๊นƒ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐ๊ทธ๋ ˆ์ด์…˜ ๋ช…๋ น์–ด -* ์Šคํ€ด์‹œ : ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ์กฐ์ • - -#### ๐Ÿ‹ ์ปค๋ฐ‹ ์Šคํ€ด์‹œ๋Š” ํŒ€์˜ ๊ทœ์น™์— ๋”ฐ๋ฅผ ๊ฒƒ - -* ๋ณดํ†ต์€ **\[MYPROJ-123 ๋ฐฑ์—”๋“œ์— ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค DB ๋„์ž…]** ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์•ž์— `์ด์Šˆ ID`๋ฅผ ๋ถ™ํž˜ - -#### ๐Ÿ‹ ๊นƒ COMMIT ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ 7๊ฐ€์ง€ ์š”๋ น - -๊ทธ ์™ธ ์ฐธ์กฐ\[๋Œ€๋ฌธ์ž ๊ด€๋ จ ๋‚ด์šฉ ์ฐธ์กฐ] : https://velog.io/@yeongmins/%EA%B9%83%ED%97%88%EB%B8%8CGitHub-%EC%A0%95%EB%A6%AC - -1. ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์‚ฌ์ด์— ๋นˆ ์ค„์„ ํ•œ ํ–‰ ์‚ฝ์ž…ํ•œ๋‹ค, -2. ์ œ๋ชฉ์€ 50์ž ์ด๋‚ด๋กœ ์ œํ•œํ•œ๋‹ค. -3. ์ œ๋ชฉ์€ ๋Œ€๋ฌธ์ž๋กœ - -> feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ fix : ๋ฒ„๊ทธ ์ˆ˜์ • docs : ๋ฌธ์„œ ์ˆ˜์ • style : ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ (์ฝ”๋“œ ํฌ๋งคํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ ๋“ฑ) design : ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ (CSS ๋“ฑ) test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง (Test Code) refactor : ๋ฆฌํŒฉํ† ๋ง (Production Code) build : ๋นŒ๋“œ ํŒŒ์ผ ์ˆ˜์ • ci : CI ์„ค์ • ํŒŒ์ผ ์ˆ˜์ • perf : ์„ฑ๋Šฅ ๊ฐœ์„  chore : ์ž์ž˜ํ•œ ์ˆ˜์ •์ด๋‚˜ ๋นŒ๋“œ ์—…๋ฐ์ดํŠธ rename : ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •๋งŒ ํ•œ ๊ฒฝ์šฐ remove : ํŒŒ์ผ์„ ์‚ญ์ œ๋งŒ ํ•œ ๊ฒฝ์šฐ - -4. ์ œ๋ชฉ ๋์— ๋งˆ์นจํ‘œ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค. -5. ์ œ๋ชฉ์€ ๋ช…๋ นํ˜• ๋ฌธ์žฅ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. -6. ๋ณธ๋ฌธ์€ ๊ฐ ํ–‰์€ 72์ž๋ฅผ ๋„˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. -7. ๋ณธ๋ฌธ์—๋Š” ์ฝ”๋“œ๊ฐ€ `์–ด๋–ป๊ฒŒ` ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ๋ณด๋‹ค๋Š” \*\*๋ฌด์Šจ ์ฝ”๋“œ๊ฐ€ ์™œ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ์„ค๋ช… \*\* - -### 12. ๊ทธ ์™ธ - -#### ๐Ÿ‹ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋น ์ง€๊ธฐ ์‰ฌ์šด ํ•จ์ •์„ ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๋ ค๋ฉด - -* ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค ํ•œ๋‹ค๊ฑฐ๋‚˜ ํ‘œ์ค€์„ ๋ฌด์‹œํ•˜๋Š” ํ–‰๋™์€ ์œ„ํ—˜ํ•˜๋‹ค. -* ๊ฐœ์„ ํ•œ ์ฝ”๋“œ๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ณด๋‹ค ๋ช‡ ๋ฐฐ ์ข‹์•„์•ผ ํ•œ๋‹ค. -* ๊ณ ๋ถ€๊ฐ€๊ฐ€์น˜๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ์žฌ์ž‘์„ฑํ•˜์ž - -#### ๐Ÿ‹ ๋˜๋„๋ก ๊ฒ€์ฆ๋œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์ž - -* ์„ฑ๊ณต์ ์ธ ๊ธฐ์—…์ด ์˜ค๋ž˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์˜ค๋ž˜๋œ ํŒจํ„ด์œผ๋กœ ๊ฒฌ๊ณ ํ•œ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ ์ด์œ ๊ฐ€ ์žˆ๋‹ค. -* \*\*์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์˜ ๋ฌธ์ œ์ ์€ ์„ฑ์ˆ™ํ•˜์ง€ ๋ชปํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. \*\* -* ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์€ ์˜์™ธ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•œ๋‹ค. -* ๊ฒŒ๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์€ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์—์„œ ๊ด€๋ จ ๋‹ต๋ณ€์„ ์ฐพ๊ธฐ๋„ ์–ด๋ ต๋‹ค. -* ์‹ ๊ธฐ์ˆ ์ด ํšŒ์‚ฌ์˜ ๊ฒฝ์Ÿ๋ ฅ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ทธ ๊ธฐ์ˆ ์„ ๋„์ž…ํ•  ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค. -* ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ํšŒ์‚ฌ์˜ ์ƒํƒœ๊ณ„์— ๊ธฐ์ˆ  ์Šคํƒ ์ „์ฒด๋ฅผ ๋•Œ๋ ค ๋„ฃ๋Š”๊ฒƒ์ด๋‹ค. ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ, ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ, IDE ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ๋ฐ˜๋“œ์‹œ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค. -* ์ƒˆ๋กœ ์„ ํƒํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ƒํƒœ๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ์„ฑ์ˆ™ํ•ด์ ธ ์žˆ๋Š”์ง€๋Š” ํŠนํžˆ ์ค‘์š”ํ•œ ์‚ฌ์•ˆ์ด๋‹ค. -* ์–ธ์–ด๊ฐ€ ์‚ฌ์žฅ๋˜์ง€ ์•Š๋Š” ํ•œ, ๋‹จ์ง€ ์˜ค๋ž˜๋๋‹ค๊ฑฐ๋‚˜ ๊ด€์‹ฌ์ด ์ค„์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๊ทธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ด์œ ๋Š” ๋˜์ง€ ๋ชปํ•œ๋‹ค. - -#### ๐Ÿ‹ ์ œ๋ฐœ ์•…๋™์€ ๋˜์ง€๋ง์ž. - -> ๋‹จ์ง€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ์ด์œ ๋กœ ํšŒ์‚ฌ์˜ ํ‘œ์ค€์„ ๋ฌด์‹œํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ํ‘œ์ค€์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ์šฐ์„ ์ˆœ์œ„, ์†Œ์œ ๊ถŒ ๋น„์šฉ, ๊ตฌํ˜„, ์„ธ๋ถ€๋‚ด์—ญ ๋“ฑ ๋‹ค๊ฐ๋„๋กœ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. - -### 13. ๊ฐœ๋ฐœ์ž ํ•„์ˆ˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ - -| โญ• ์ด๊ฒƒ๋งŒ์€ ์ง€ํ‚ค์ž | โŒ ์ด๊ฒƒ๋งŒ์€ ํ”ผํ•˜์ž | -| ----------------------- | --------------------------------- | -| ์ ์ง„์ ์œผ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•˜์ž | ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋‚จ์šฉํ•˜์ง€ ๋ง์ž | -| ๋ฆฌํŒฉํ„ฐ๋ง ์ปค๋ฐ‹๊ณผ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ปค๋ฐ‹์€ ๋ถ„๋ฆฌํ•˜์ž | ํ…Œ์ŠคํŠธ๋ฅผ ๋ชฉ์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. | -| ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜์ž | ํŠน์ • ์–ธ์–ด์— ์—ฐ์—ฐํ•˜์ง€ ๋ง์ž | -| ์ฒ˜์Œ ์ƒํƒœ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์ž | ํšŒ์‚ฌ์˜ํ‘œ์ค€๊ณผ ๋„๊ตฌ๋ฅผ ๋ฌด์‹œํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. | -| ํ‰๋ฒ”ํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์ž | ์—…์ŠคํŠธ๋ฆผ ์ปค๋ฐ‹์—†์ด ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ํฌํฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. | - -## ์ฝ๊ณ  ๋‚œ ๋’ค - -> ๋ฆฌํŒฉํ„ฐ๋ง๋„ ์ด๊ฒƒ์ €๊ฒƒ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์•Œ์•˜๊ณ , ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ ๋‚จ์„ ์„ค๋“ํ•  ๋•Œ๋Š” ๊ธฐ๊ฐ„์„ ๋‘๊ณ  ์‹ ๋ขฐ๊ฐ์„ ์Œ“๊ณ  ์–˜๊ธฐํ•˜์ž๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์‹ค ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋Š” ํšŒ์‚ฌ, ํŒ€ ์ปจ๋ฒค์…˜์— ๋งž์ถ”๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค!!! diff --git a/developLog/book/onboarding/4/4-1.md b/developLog/book/onboarding/4/4-1.md deleted file mode 100644 index 2dbb1b9..0000000 --- a/developLog/book/onboarding/4/4-1.md +++ /dev/null @@ -1,643 +0,0 @@ -# ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 4์žฅ -(1) - -![](https://velog.velcdn.com/images/prettylee620/post/a1ed16d1-5bbd-4eff-928a-5f94ea820cc8/image.png) - -## ์šด์˜ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•œ ์ฝ”๋“œ ์ž‘์„ฑ - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์€ ์—„์—ฐํžˆ ๋‹ค๋ฅด๋‹ค. - -> ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ์„ ์ฝ๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ด๋ฉฐ, ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - -### 1. ๋“ค์–ด๊ฐ€๊ธฐ - -* ์‹ค ์„ธ๊ณ„์˜ ์‚ฌ์šฉ์ž๋Š” ์˜ˆ์ธก์ด ์–ด๋ ค์šฐ๋ฉฐ, ๋„คํŠธ์›Œํฌ๋„ ๋ฏฟ์„ ์ˆ˜ ์—†๋‹ค. -* ํ”„๋กœ๋•์…˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ง€์†์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿ‹ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ - -* ๋ณดํ˜ธ ์žฅ์น˜, ๋ถ„์„ ์žฅ์น˜, ์ œ์–ด ์žฅ์น˜๊ฐ€ ๋‚ด์žฅ๋œ ์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค. -* **์•ˆ์ „ํ•˜๊ณ  ํšŒ๋ณต์„ฑ ์žˆ๋Š” ์ฝ”๋”ฉ ๊ธฐ๋ฒ•**์„ ์ด์šฉํ•ด ๋ฐฉ์–ด์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•ด์„œ ์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•ด์•ผ ํ•œ๋‹ค. - -#### ๐Ÿ‹ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์˜ ์ค‘์š”์„ฑ - -1. ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์–‘ํ•œ ์žฅ์• ๋ฅผ ๊ทน๋ณตํ•˜๋ฉฐ, ํšŒ๋ชฉ์„ฑ์„ ๊ฐ–์ถ˜ ์ฝ”๋“œ๋Š” ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. -2. ์šฉ์ดํ•œ ๋ถ„์„์„ ์œ„ํ•ด **๋กœ๊ทธ, ์ง€ํ‘œ, ํ˜ธ์ถœ ์ถ”์  ์ •๋ณด** ๋“ฑ์„ ์ˆ˜์ง‘ํ•˜์ž. -3. ์šด์˜ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์€ ์„ค์ • ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์‹œ์Šคํ…œ ๋„๊ตฌ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. - -### 2. ์žฅ์• ์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์–ด์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์•ˆ - -* ๋ฐฉ์–ด์  ์ฝ”๋“œ๋Š” ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋นˆ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋Œ€๋ถ€๋ถ„ ๋ณต๊ตฌ๋œ๋‹ค. -* ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ณ  ํšŒ๋ณต์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค์ž - -#### ๐Ÿ‹ ์•ˆ์ „ํ•œ ์ฝ”๋“œ - -1. ์ปดํŒŒ์ผ ํƒ€์ž„์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„ ์žฅ์•  ์ตœ์†Œํ™” -2. `๋ถˆ๋ณ€ ๋ณ€์ˆ˜` ์‚ฌ์šฉ -3. ์ ‘๊ทผ ์ œ์–ด์ž ์ด์šฉํ•ด์„œ ๋ฒ”์œ„ ์ œํ•œ -4. `์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๊ธฐ`๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฒ„๊ทธ ์ค„์ด๊ธฐ -5. ๋Ÿฐํƒ€์ž„์— ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ผ์ด ๋ฒŒ์–ด์ง€์ง€ ์•Š๋„๋ก `์ž…๋ ฅ๊ฐ’ ๊ฒ€์‚ฌ` - -#### ๐Ÿ‹ ํšŒ๋ณต์„ฑ ์žˆ๋Š” ์ฝ”๋“œ - -* ๊ถŒ์žฅ๋˜๋Š” `์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•`์„ ํ™œ์šฉํ•˜์—ฌ ์žฅ์• ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. - -#### โœ๏ธ ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋ž€? - -* ํ•œ ๋ฒˆ ๊ฐ’์ด ํ• ๋‹น๋˜๋ฉด ๊ทธ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. - -```java -private final int value; -``` - -* ์žฅ์  - -> 1. ๊ฐ’์˜ ๋ณด์žฅ -> 2. ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ -> 3. ์บ์‹œํ™” ์šฉ์ด -> 4. ๋””๋ฒ„๊น… ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด -> 5. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ์˜ ์กฐํ•ฉ - -#### โœ๏ธ ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๊ธฐ๋ž€? - -* **์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฒƒ**์„ ์ •์  ๊ฒ€์‚ฌ ๋„๊ตฌ(static checking) -* ์—ฐ์‚ฐ๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์˜ค๋ฅ˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ -* ์ด ๋„๊ตฌ๋Š” ์ฝ”๋“œ์˜ ์ปดํŒŒ์ผ ๊ณผ์ •์ด๋‚˜ ๋นŒ๋“œ ๊ณผ์ •์—์„œ์˜ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๋ฐœ๊ฒฌํ•˜๊ณ , ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜, ๋…ผ๋ฆฌ ์˜ค๋ฅ˜ ๋“ฑ์„ ์ฒดํฌํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๊ณ  ์•ˆ์ „์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ -* ์ข…๋ฅ˜: Java์˜ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ •์  ๋ถ„์„ ๋„๊ตฌ, TypeScript์˜ tsc(Typescript Compiler), Kotlin์˜ ์ปดํŒŒ์ผ๋Ÿฌ, C#์˜ Roslyn - -#### โœ๏ธ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์‚ฌ ์˜ˆ์‹œ - -1. ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉ - -```java -if (inputValue >= 0 && inputValue <= 100) { - // ์œ ํšจํ•œ ๋ฒ”์œ„ ๋‚ด์˜ ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ -} else { - // ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ -} -``` - -2. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - -```java -try { - // ์ž…๋ ฅ๊ฐ’ ๊ฒ€์‚ฌ - if (inputValue < 0) { - throw new IllegalArgumentException("์ž…๋ ฅ๊ฐ’์€ ์Œ์ˆ˜์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."); - } - - // ์œ ํšจํ•œ ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ -} catch (IllegalArgumentException e) { - // ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - System.err.println("์—๋Ÿฌ: " + e.getMessage()); -} -``` - -3. ์ •๊ทœ ํ‘œํ˜„์‹ ์‚ฌ์šฉ - -```java -String emailRegex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$"; -if (inputValue.matches(emailRegex)) { - // ์œ ํšจํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ ํ˜•์‹ -} else { - // ์ž˜๋ชป๋œ ํ˜•์‹ -} -``` - -4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ - -```java -import org.apache.commons.lang3.Validate; - -try { - Validate.isTrue(inputValue > 0, "์ž…๋ ฅ๊ฐ’์€ ์–‘์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); - - // ์œ ํšจํ•œ ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ -} catch (IllegalArgumentException e) { - // ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - System.err.println("์—๋Ÿฌ: " + e.getMessage()); -} -``` - -### 3. null ๊ฐ’ ์‚ฌ์šฉ์€ ํ”ผํ•˜์ž - -#### ๐Ÿ‹ null์ด๋ž€ - -* ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’ - -#### ๐Ÿ‹ NullPointException - -* ๋งค์šฐ ๋ณดํŽธ์ ์œผ๋กœ ๋ฐœ์ƒ -* ๋ณ€์ˆ˜๊ฐ€ **๋„๊ฐ’์„ ๊ฐ–์ง„ ์•Š์•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜, ๋„ ๊ฐ์ฒด ํŒจํ„ด์ด๋‚˜ ์˜ต์…˜ ํƒ€์ž… ๋“ฑ์„ ์‚ฌ์šฉ**ํ•ด์„œ ๋„ ํฌ์ธํŠธ ์˜ˆ์™ธ ๋ฐฉ์ง€ - -#### โœ๏ธ ๋„ ๊ฐ์ฒด ํŒจํ„ด(Null Object Pattern) - -> ๋””ํดํŠธ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ , ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒํ•œ๋‹ค. - -1. null ์ฐธ์กฐ ๋Œ€์‹ ์— **์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ๋„ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ˆ์™ธ๋ฅผ ํ”ผํ•˜๊ณ  ๊ธฐ๋ณธ ๋™์ž‘์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด** -2. ๋„ ๊ฐ’ ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด -3. ๋„ ๊ฐ์ฒด๋Š” ์‹ค์ œ ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ, ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์•„๋ฌด๋Ÿฐ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ๊ฐ’ ๋ฐ˜ํ™˜ - -```java -interface Shape { - double area(); -} - -class Circle implements Shape { - private double radius; - - public Circle(double radius) { - this.radius = radius; - } - - public double area() { - return Math.PI * radius * radius; - } -} - -class NullShape implements Shape { - public double area() { - return 0.0; // ๋„ ๊ฐ์ฒด ์—ญํ• , ๋””ํดํŠธ ๊ฐ’ ์ œ๊ณต - } -} -``` - -4. ์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ ๋นˆ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒ€์ƒ‰ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ - -```java -import java.util.Arrays; - -public class SearchExample { - private static final Person[] EMPTY_PERSON_ARRAY = new Person[0]; - - public static Person[] searchPersons(String keyword) { - // ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ๋กœ์ง ๊ตฌํ˜„ - // ์˜ˆ์‹œ๋กœ ํ•ญ์ƒ ๋นˆ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•จ - return EMPTY_PERSON_ARRAY; - } - - public static void main(String[] args) { - String searchKeyword = "Alice"; - Person[] foundPersons = searchPersons(searchKeyword); - - if (foundPersons.length == 0) { - System.out.println("No persons found."); - } else { - System.out.println("Found persons:"); - for (Person person : foundPersons) { - System.out.println("Name: " + person.getName() + ", Age: " + person.getAge()); - } - } - } -} - -class Person { - private String name; - private int age; - - public Person(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } -} -``` - -#### โœ๏ธ ์˜ต์…˜ ํƒ€์ž… - -1. ๊ฐ’์˜ ์กด์žฌ ์œ ๋ฌด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•, ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์‹ค์ œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ , ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๋นˆ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž… - -```java -class Option { //Option ํด๋ž˜์Šค๋Š” ์ œ๋„ˆ๋ฆญ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์˜ ์กด์žฌ ์œ ๋ฌด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ - private T value; - - private Option(T value) { - this.value = value; - } - - public static Option of(T value) { - return new Option<>(value); - } - - public T get() { - if (value == null) { // ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉฐ - throw new IllegalStateException("No value present"); - } - return value; // ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‹ค์ œ๊ฐ’ ๋ฐ˜ํ™˜ - } -} -``` - -#### ๐Ÿ‹ ๋„ ๊ฒ€์‚ฌ๋Š” ๋ฉ”์†Œ๋“œ์˜ ์‹œ์ž‘ ์ง€์ ์—์„œ ํ•ด์•ผํ•œ๋‹ค. - -1. `NotNull` ์• ๋…ธํ…Œ์ด์…˜ ์–ธ์–ด ๊ธฐ๋Šฅ ์ด์šฉ - -```java -import javax.validation.constraints.NotNull; - -public class Person { - private String name; - private int age; - - public Person(@NotNull String name, @NotNull int age) { - this.name = name; - this.age = age; - } - - @NotNull - public String getName() { - return name; - } - - public void setName(@NotNull String name) { - this.name = name; - } - - @NotNull - public int getAge() { - return age; - } - - public void setAge(@NotNull int age) { - this.age = age; - } - - public static void main(String[] args) { - // ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ - Person person = new Person("Alice", 30); - System.out.println("Name: " + person.getName()); - System.out.println("Age: " + person.getAge()); - - // ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜: null ๊ฐ’ ์ „๋‹ฌ - Person nullPerson = new Person(null, 25); // ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ - System.out.println("Name: " + nullPerson.getName()); - System.out.println("Age: " + nullPerson.getAge()); - } -} -``` - -### 4. ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ž - -> ์ž๋ฐ”์—์„œ๋Š” final, ์Šค์นผ๋ผ์—์„œ๋Š” val ๋Ÿฌ์ŠคํŠธ๋Š” let - -1. ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋Š” ๊ฐ’์ด ํ•œ ๋ฒˆ ๋Œ€์ž…๋˜๊ณ  ๋‚˜๋ฉด ๊ทธ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. -2. ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋Š” ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š์„ ๊ฒƒ์„ ์ธ์ง€ -3. ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋” ๊ฐ„๋‹จํ•ด์ง€๋ฉฐ, ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์ธ์ง€ํ•˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ๋Ÿฐํƒ€์ž„์€ ๋” ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค. - -### 5. ํƒ€์ž… ํžŒํŠธ์™€ ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ž. - -> ๋ณ€์ˆ˜๊ฐ€ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ œํ•œํ•˜์ž. ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ž์—ด ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” String๋ณด๋‹ค๋Š” `Enum` ์„ ์–ธ ๊ฐ€๋Šฅ - -1. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฐ’์„ ๋Œ€์ž…ํ•ด๋„ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ฆ‰์‹œ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค. -2. ๊ฐ€์žฅ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์ž - -#### ๐Ÿ‹ Enum์ด ๋” ์ข‹์€ ์ด์œ  - -> 1. Enum์€ ๋ช‡ ๊ฐ€์ง€ ๊ณ ์ •๋œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ, ํ•œ์ •๋œ ์„ ํƒ์ง€ ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ - -2. ๊ฐ€๋…์„ฑ ๋ฐ ์•ˆ์ •์„ฑ์˜ ์ข‹์Œ -3. ์ œํ•œ๋œ ์„ ํƒ์ง€ -4. ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜ -5. ํƒ€์ž… ์•ˆ์ •์„ฑ -6. ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜ ์‚ฌ์šฉ - -```java -public enum DayOfWeek { - MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY -} - -public class Main { - public static void main(String[] args) { - DayOfWeek today = DayOfWeek.WEDNESDAY; - - switch (today) { - case MONDAY: - System.out.println("Today is Monday."); - break; - case WEDNESDAY: - System.out.println("Today is Wednesday."); - break; - // ... - } - } -} -``` - -#### ๐Ÿ‹ ํŒŒ์ด์ฌ ์˜ˆ์ œ - -* ํƒ€์ž… ํžŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ๋ฐ›์•„ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ์‚ฌ์‹ค -* ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์˜ ํƒ€์ž…์„ ๋ช…์‹œ ๊ฐ€๋Šฅ - -```python -def say(something: str) -> str: - return "You said: " + something - -``` - -#### โœ๏ธ ํƒ€์ž… ํžŒํŠธ๋ž€ - -> **ํƒ€์ž… ํžŒํŠธ**๋Š” ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ ์ง„์ ์œผ๋กœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํƒ€์ž… ํžŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„๋˜๋Š” ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๊ธฐ ๋„์ž… ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ - -* ํƒ€์ž… ํžŒํŠธ(Type Hint)๋Š” **ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’ ๋“ฑ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ •๋ณด๋ฅผ ์ œ๊ณต**ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. -* ํƒ€์ž… ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์ฃผ๋กœ ์ •์  ํƒ€์ž… ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŒŒ์ด์ฌ๊ณผ ๊ฐ™์€ ๋™์  ํƒ€์ž… ์–ธ์–ด์—์„œ๋„ ํƒ€์ž… ํžŒํŠธ๋ฅผ ์ง€์› - -### 6. ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์‚ฌํ•˜์ž. - -> ์ฝ”๋“œ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ž…๋ ฅ๊ฐ’์€ ํ›ผ์† ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ. \*\*์‚ฌ์ „ ์กฐ๊ฑด, ์ฒดํฌ์„ฌ, ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋ณด์•ˆ ๊ด€๋ จ ๊ถŒ์žฅ ๊ธฐ๋ฒ•, ๋ณดํŽธ์ ์ธ ์—๋Ÿฌ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ๋„๊ตฌ \*\*ํ™œ์šฉ - -* ์›์น˜ ์•Š๋Š” ์ž…๋ ฅ๊ฐ’์ด ์ „๋‹ฌ๋˜๋ฉด ์ตœ๋Œ€ํ•œ ์ด๋ฅธ ์‹œ์ ์— ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ์กฐ์น˜ํ•ด๋‘์ž. -* ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๊ฒ€์‚ฌํ•˜์ž. -* \*\*`์ž…๋ ฅ ๋ฌธ์ž์—ด`\*\*์ด ์›ํ•˜๋Š” ํ˜•์‹์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๋ฌธ์ž์—ด ์•ž ๋’ค์˜ ๊ณต๋ฐฑ๋„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์  -* ์ˆซ์ž๋Š” ์ ์ ˆํ•œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€, ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 0๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ํ™•์ธ -* ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ IP์ฃผ์†Œ๋ผ๋ฉด ์ ์ ˆํ•œ IP์ฃผ์†Œ์ธ์ง€๋„ ํ™•์ธ - -#### ๐Ÿ‹ ์‚ฌ์ „ ์กฐ๊ฑด, ์‚ฌํ›„ ์กฐ๊ฑด ์ด์šฉ - -> ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ž€ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํƒ€์ž…, ๋ฒ”์œ„, ์ƒํƒœ ๋“ฑ์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ • - -1. ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌ๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•„์š” -2. ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ - -#### ๐Ÿ‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐฉ๋ฒ• - -1. ํƒ€์ž… ํžŒํŠธ ์‚ฌ์šฉ -2. ์ „์ฒ˜๋ฆฌ ๊ณผ์ • ์ถ”๊ฐ€ - -* ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์ธ์ž์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์˜ˆ๋ฅผ ๋“ค์–ด, ์ธ์ž๊ฐ€ ํŠน์ • ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€, ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๋“ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉด ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. - -3. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ -4. ์‚ฌ์ „ ์กฐ๊ฑด, ์‚ฌํ›„ ์กฐ๊ฑด ์„ค์ • - -* ์‚ฌ์ „ ์กฐ๊ฑด์€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๊ฒ€์‚ฌํ•ด์•ผ ํ•  ์กฐ๊ฑด์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์‚ฌํ›„ ์กฐ๊ฑด์€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ ํ›„์˜ ์กฐ๊ฑด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. -* ์‚ฌ์ „ ์กฐ๊ฑด ์„ค์ • : b๊ฐ€ 0์ด๋ฉด `AssertionError` ์˜ˆ์™ธ ๋ฐœ์ƒ - -```python -def divide(a, b): - assert b != 0, "b cannot be zero" - return a / b -``` - -* ์‚ฌํ›„ ์กฐ๊ฑด ์„ค์ • : ํ•ฉ๊ณ„๊ฐ€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌ ํ›„ ์‚ฌํ›„ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด `AssertionError` ์˜ˆ์™ธ ๋ฐœ์ƒ - -```python -def calculate_sum(numbers): - result = sum(numbers) - assert result >= 0, "sum should be non-negative" - return result -``` - -5. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ -6. ๋ฌธ์„œํ™” - -#### ๐Ÿ‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ - -**1. cheackNotNull์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ** **2. @Size(min=0, max=100)** - -#### ๐Ÿ‹ ์˜๋„์น˜ ์•Š์€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋Š”์ง€ ์ฒดํฌ์„ฌ์„ ์ด์šฉํ•ด์„œ ํ™•์ธ - -**1. ์ฒดํฌ์„ฌ์ด๋ž€?** - -* ๋ฐ์ดํ„ฐ์˜ ํŠน์ • ๋ถ€๋ถ„์—์„œ ์ƒ์„ฑ๋œ ํ•ด์‹œ ๊ฐ’ ๋˜๋Š” ์ฒดํฌ์„ฌ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ด ํ„ฐ -* **๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ฒดํฌ์„ฌ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์—ฌ๋ถ€ ํ™•์ธ ๊ฐ€๋Šฅ**\ - - -2. ์˜ˆ์‹œ - -* ํŒŒ์ผ์˜ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ์ดํ›„์— ํŒŒ์ผ์„ ๋‹ค์‹œ ์ฝ์–ด์™€์„œ ์ฒดํฌ์„ฌ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•œ ํ›„ ์ €์žฅ๋œ ์ฒดํฌ์„ฌ๊ณผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ -* ์˜ˆ์ œ python - -```python -import hashlib - -def calculate_checksum(data): - # ๋ฐ์ดํ„ฐ์˜ ์ฒดํฌ์„ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜ - sha256 = hashlib.sha256() - sha256.update(data.encode()) - return sha256.hexdigest() - -def save_data_with_checksum(filename, data): - # ๋ฐ์ดํ„ฐ์™€ ์ฒดํฌ์„ฌ ๊ฐ’์„ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜ - checksum = calculate_checksum(data) - with open(filename, 'w') as file: - file.write(data + '\n') - file.write(checksum) - -def verify_checksum(filename): - # ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์™€ ์ฒดํฌ์„ฌ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ - with open(filename, 'r') as file: - lines = file.readlines() - data = lines[0].strip() - saved_checksum = lines[1].strip() - calculated_checksum = calculate_checksum(data) - if saved_checksum == calculated_checksum: - print("Checksum verification successful. Data is intact.") - else: - print("Checksum verification failed. Data may be corrupted.") - -# ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ €์žฅ -data = "Hello, world!" -filename = "data.txt" -save_data_with_checksum(filename, data) - -# ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ -verify_checksum(filename) -``` - -**2. java ์˜ˆ์ œ** - -```java -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -public class DataIntegrityExample { - - // ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฉ”์„œ๋“œ - public static String calculateChecksum(String data) throws NoSuchAlgorithmException { - // SHA-256 ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” MessageDigest ๊ฐ์ฒด ์ƒ์„ฑ - MessageDigest md = MessageDigest.getInstance("SHA-256"); - // ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ๊ฐ’ ๊ณ„์‚ฐ - byte[] hash = md.digest(data.getBytes()); - StringBuilder hexString = new StringBuilder(); - - // ํ•ด์‹œ๊ฐ’์„ 16์ง„์ˆ˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ - for (byte b : hash) { - String hex = Integer.toHexString(0xff & b); - if (hex.length() == 1) { - hexString.append('0'); - } - hexString.append(hex); - } - - return hexString.toString(); - } - - public static void main(String[] args) { - try { - // ์›๋ณธ ๋ฐ์ดํ„ฐ ์„ค์ • - String originalData = "Hello, world!"; - // ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ์ฒดํฌ์„ฌ ๊ณ„์‚ฐ - String checksum = calculateChecksum(originalData); - - System.out.println("Original Data: " + originalData); - System.out.println("Calculated Checksum: " + checksum); - - // ๋ฐ์ดํ„ฐ ๋ณ€์กฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ - String corruptedData = "Hacked, world!"; - // ๋ณ€์กฐ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒดํฌ์„ฌ ๊ณ„์‚ฐ - String corruptedChecksum = calculateChecksum(corruptedData); - - System.out.println("Corrupted Data: " + corruptedData); - System.out.println("Corrupted Checksum: " + corruptedChecksum); - - // ์ฒดํฌ์„ฌ ๊ฐ’ ๋น„๊ต๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ - if (checksum.equals(corruptedChecksum)) { - System.out.println("Checksum verification failed. Data may be corrupted."); - } else { - System.out.println("Checksum verification successful. Data is intact."); - } - } catch (NoSuchAlgorithmException e) { - System.err.println("Error: " + e.getMessage()); - } - } -} - -``` - -#### ๐Ÿ‹ ๊ฒ€์ฆ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ… ๋ฐฉ์ง€ํ•˜์ž. - -* ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ… ๋ฐฉ์ง€ (Cross-Site Scripting, XSS): - -1. ์„ค๋ช…: ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…์€ **์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์•…์„ฑ ํ–‰์œ„๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ** -2. ์˜ˆ์‹œ: ์ž…๋ ฅ ํผ์— ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํš๋“ํ•˜๋Š” ์‹œ๋„๋ฅผ ์ฐจ๋‹จํ•ด์•ผ ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ `HTML ์ด์Šค์ผ€์ดํ”„ ํ•จ์ˆ˜`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š” - -#### ๐Ÿ‹ ํ•ญ์ƒ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์‚ฌํ•ด์„œ SQL ์ฃผ์ž… ๊ณต๊ฒฉ ์˜ˆ๋ฐฉ - -* SQL ์ฃผ์ž… ๊ณต๊ฒฉ ๋ฐฉ์ง€: - -1. ์„ค๋ช…: SQL ์ฃผ์ž…์€ **์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘**ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋ฅผ ๋ณ€์กฐํ•˜๋Š” ๊ณต๊ฒฉ -2. ์˜ˆ์ œ: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฟผ๋ฆฌ์— ์‚ฝ์ž…ํ•˜์ง€ ์•Š๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ORM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ SQL ์ฃผ์ž… ๊ณต๊ฒฉ์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿ‹ strcpy ๊ฐ™์€ ๋ช…๋ น ์ด์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์กฐ์ž‘ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช…์‹œ์  ์„ค์ •ํ•ด์„œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐฉ์ง€ - -* ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐฉ์ง€ - -1. ์„ค๋ช…: ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” **ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ดˆ๊ณผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ฝ๋Š” ๊ณต๊ฒฉ**์œผ๋กœ ํฌ๋ž˜์‹œ๋ฅผ ์œ ๋ฐœํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ํ๋ฆ„์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. -2. ์˜ˆ์ œ: `๋ฌธ์ž์—ด ๋ณต์‚ฌ ํ•จ์ˆ˜(strcpy)`๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ช…์‹œ์ ์œผ๋กœ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋œ ํ•จ์ˆ˜(strncpy, memcpy)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿ‹ ๋ณด์•ˆ ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋กœํ† ์ฝœ์€ ์ง์ ‘ ์ž‘์„ฑ๋ง๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ ์‚ฌ์šฉ - -1. ์„ค๋ช…: ๋ณด์•ˆ ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š” -2. ์˜ˆ์ œ: ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ ์‹œ์—๋Š” ์•ˆ์ „ํ•œ ํ•ด์‹œ ํ•จ์ˆ˜ (์˜ˆ: BCrypt)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ์—๋Š” `HTTPS ํ”„๋กœํ† ์ฝœ`์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™” - -### 7. ์˜ˆ์™ธ๋ฅผ ํ™œ์šฉํ•˜์ž - -> ํŠน์ •ํ•œ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ์—๋Ÿฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ๋ฌผ์ด๋‹ค. - -1. ํŠน์ •ํ•œ ๋ฆฌํ„ด๊ฐ’์€ ๋ฉ”์†Œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. 2. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฆฌํ„ด๊ฐ’์ด ์—๋Ÿฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋Š” ์ ์„ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ๋ฆฌํ„ด๊ฐ’์ด ์–ด๋–ค ์—๋Ÿฌ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ๊ธฐ์–ตํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค. -2. ์˜ˆ์™ธ๋Š” ์ด๋ฆ„๋„ ์žˆ๊ณ  ์Šคํƒ ์ถ”์  ์ •๋ณด, ์ค„ ๋ฒˆํ˜ธ, ๋ฉ”์„ธ์ง€ ๋“ฑ nujll์ด๋‚˜ -1๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. - -### 8. ์˜ˆ์™ธ๋Š” ๊ตฌ์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ž. - -> ์˜ˆ์™ธ๋Š” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ œ์–ดํ•˜๋Š” ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๋ผ, ์‹คํŒจ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ**ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์–ธ์–ด์— ๋‚ด์žฅ๋œ ์˜ˆ์™ธ ํƒ€์ž…์ด ๋ฌธ์ œ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ž„์˜๋กœ ์˜ˆ์™ธ๋Š” ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. - -#### ๐Ÿ‹ ๊ฐ€๋Šฅํ•˜๋ฉด ์–ธ์–ด์— ๋‚ด์žฅ๋œ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํฌ๊ด„์ ์ธ ์˜๋ฏธ๋ฅผ ๋‹ด๋Š” ์˜ˆ์™ธ๋Š” ๋งŒ๋“ค์ง€ ์•Š๊ฒŒ ํ•˜์ž. - -1. ๋„ˆ๋ฌด ํฌ๊ด„์ ์œผ๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์–ด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ ์ง„๋‹ค. -2. ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์— ๋Œ€ํ•ด ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ด ์ค‘๋‹จ๋˜๊ฒŒ ํ•  ์ˆ˜ ๋ฐ–์— ์—†์œผ๋ฉฐ, ์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ - -#### ๐Ÿ‹ ์˜ˆ์™ธ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. - -1. ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์„ ํ•˜์ง€ ์•Š๊ธธ ์›ํ•  ๋ฟ์ด์ง€ ์ฝ”๋“œ ์Šค์Šค๋กœ ๋˜‘๋˜‘ํ•ด์ง€๊ธธ ์›ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค. -2. ์˜ˆ์™ธ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถ„๊ธฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์–ด๋ ค์šธ ๋ฟ ๋”๋Ÿฌ ๋””๋ฒ„๊น…๋„ ์–ด๋ ค์›Œ์ง„๋‹ค. -3. ์ž˜๋ชป๋œ ์˜ˆ์ œ - -* ์„ค๋ช…: ์œ„์˜ ์ฝ”๋“œ๋Š” OrderProcessingException์„ ์ƒํƒœ ๊ฒ€์ฆ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ œ์–ดํ•˜๋ ค๊ณ  ํ•œ๋‹ค. -* ์ด๋กœ ์ธํ•ด ์˜ˆ์™ธ๊ฐ€ ์ •์ƒ์ ์ธ ํ๋ฆ„ ์ œ์–ด์— ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค. -* ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒํƒœ ๊ฒ€์ฆ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ `if`๋ฌธ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์ธ ์ƒํƒœ ๊ฒ€์ฆ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. - -```java -public class IncorrectExceptionUsage { - - // ์ž˜๋ชป๋œ ์˜ˆ์™ธ ์‚ฌ์šฉ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์œผ๋กœ ์˜ˆ์™ธ ํ™œ์šฉ - public static void processOrder(int orderStatus) throws OrderProcessingException { - try { - if (orderStatus == 0) { - throw new OrderProcessingException("Invalid order status"); // ์˜ˆ์™ธ๋ฅผ ์ƒํƒœ ๊ฒ€์ฆ์— ์‚ฌ์šฉ - } - - // ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๋กœ์ง - // ... - - } catch (OrderProcessingException ex) { - // ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ - logError(ex.getMessage()); - } - } - - public static void main(String[] args) { - int orderStatus = 0; - try { - processOrder(orderStatus); - } catch (OrderProcessingException ex) { - logError("Failed to process order: " + ex.getMessage()); - } - } - - private static void logError(String message) { - System.err.println("Error: " + message); - } -} - - -``` - -### 8. ์˜ˆ์™ธ๋Š” ์ผ์ฐ ๋˜์ง€๊ณ  ์ตœ๋Œ€ํ•œ ๋Šฆ๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ž. - -#### ๐Ÿ‹ ์ผ์ฐ ๋˜์ง„๋‹ค๋ผ๋Š” ์˜๋ฏธ - -> ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€์ ์œผ๋กœ๋ถ€ํ„ฐ ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์ง€์ ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค๋Š” ๋œป์œผ๋กœ ์ค‘๊ฐ„์— ์œ„์น˜ํ•œ ๊ณ„์ธต์€ ์–ด์„คํ”„๊ฒŒ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์˜ˆ์™ธ๋ฅผ ์ƒ์œ„๋กœ ๊ณ„์ธตํ•˜๋Š” ๊ฒŒ ๋งž๋‹ค. - -1. ์‹ค์ œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€์ ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๊ณณ์œผ๋กœ ํ•˜๋ฉด ์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์•Œ๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค. -2. ์ง„์งœ ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ๊ณณ์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•„๋‚ด์•ผ๋งŒ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -#### ๐Ÿ‹ ์˜ˆ์™ธ๋ฅผ ๋Šฆ๊ฒŒ ์žก๋Š”๋‹ค๋ผ๋Š” ์˜๋ฏธ - -> ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ ์ ˆํ•œ ์œ„์น˜์— ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ํ˜ธ์ถœ ์Šคํƒ์„ ํ†ตํ•ด ์ „ํŒŒ์‹œํ‚จ๋‹ค๋Š” ๋œป์ด๋‹ค. - -1. ์˜ˆ๋ฅผ ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋ ค๋Š”๋ฐ ๋‚จ์€ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ ์ƒ๊ฐํ•ด๋ณด๊ธฐ - -* ๋Œ€์ฒ˜๋ฐฉ์•ˆ - - * ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ณ  ์žฌ์‹œ๋„ - * ๋น„๋™๊ธฐ์ ์œผ๋กœ ์žฌ์‹œ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ• - * ๋‹ค๋ฅธ ๋””์Šคํฌ์— ๊ธฐ๋ก - * ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. - * ํฌ๋ž˜์‹œ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ๋†”๋‘๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ• - - > `ํฌ๋ž˜์‹œ`๋ž€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์‹œ์Šคํ…œ์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ํ˜„์ƒ์„ ์˜๋ฏธ ๋‹ค์‹œ ๋งํ•ด, ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์‹œ์Šคํ…œ์ด ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๋Š” ์ƒํƒœ - -2. ์ ์ ˆํ•œ ์กฐ์น˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋กœ๊ทธ ์„ ํ–‰ ๊ธฐ์ž…์€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ก๋ผ์•ผ ํ•˜๋Š” ๋ฐ˜๋ฉด ์›Œ๋“œํ”„๋กœ์„ธ์„œ์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ €์žฅ ๊ธฐ๋Šฅ์€ ์กฐ๊ธˆ ๋Šฆ๊ฒŒ ์‹คํ–‰๋˜๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. - -#### ๐Ÿ‹ ์ตœ์•…์˜ ๊ฒฝ์šฐ - -* ์ด ๊ฒฝ์šฐ ์˜ˆ์™ธ๋Š” ๋กœ๊ทธ์— ๊ธฐ๋ก๋˜์ง€๋„ ์•Š๊ณ  ๋‹ค์‹œ ๋˜์ ธ์ง€์ง€๋„ ์•Š์œผ๋ฉฐ ๋‹ค๋ฅธ ์–ด๋–ค ์กฐ์น˜๋„ ์ทจํ•ด์ง€์ง€ ์•Š์•˜๋‹ค. -* ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์•„๋ฌด๋„ ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ, ์ตœ์•…์˜ ๊ฒฐ๊ณผ ์ดˆ๋ž˜ - -```java -try{ -//.. -} -catch(Exception e){ -//์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ๋ฌด์‹œ -} -``` - -## ๋Š๋‚Œ์  - -> ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€ ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์„ ์ด ์žฅ์—์„œ ํ•ต์‹ฌ์„ ์ง‘์–ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด ์žฅ์€ ๋„ˆ๋ฌด ๊ธธ์–ด์ ธ์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ ์„œ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋ฉฐ, **์ž๋ฐ”์™€ ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅ ์˜ˆ์™ธ์ฒ˜๋ฆฌ**์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด์•ผ ๊ฒ ๋‹ค. diff --git a/developLog/book/onboarding/4/4-2.md b/developLog/book/onboarding/4/4-2.md deleted file mode 100644 index ff6cf84..0000000 --- a/developLog/book/onboarding/4/4-2.md +++ /dev/null @@ -1,515 +0,0 @@ -# ํ•„๋… ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 4์žฅ -(2) - -![](https://velog.velcdn.com/images/prettylee620/post/b9ac94e2-3069-475e-98c6-9bcbc19cdce6/image.png) - -> ์ด ๊ธ€์€ ์ฑ…์„ ์ฝ๊ณ  ๊ณต๋ถ€ํ•˜๊ณ  ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์šฉ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - -## ์šด์˜ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•œ ์ฝ”๋“œ ์ž‘์„ฑ - -### 1. ์žฌ์‹œ๋„๋Š” ํ˜„๋ช…ํ•˜๊ฒŒ - -#### ๐Ÿˆ ์—๋Ÿฌ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ฒซ ๋ฒˆ์งธ ์žฌ์‹œ๋„ - -> ๋‹จ์ˆœํžˆ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ๋„ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‰ฌ์šด ์ผ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์‹ค์—์„œ ์žฌ์‹œ๋„์˜ ์‹œ๊ธฐ์™€ ๋นˆ๋„๋ฅผ ํŒ๋‹จํ•˜๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ๋…ธํ•˜์šฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. - -* ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์žฌ์‹œ๋„ํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ์ฃผ๋กœ ์›๊ฒฉ ์‹œ์Šคํ…œ์— ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚œ๋‹ค. - -#### ๐Ÿˆ ๋‹จ์ˆœํžˆ ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ ๊ทธ ์ฆ‰์‹œ ์ž‘์—… ์žฌ์‹œ๋„ - -* ๋ฌธ์ œ๋Š” ์žฌ์‹œ๋„ ํ›„ ๋˜ ์‹คํŒจํ•˜๋ฉด ์†๋„๋งŒ ๋Š๋ ค์ง€๊ณ  ์‹œ์Šคํ…œ ๋ณต๊ตฌํ•˜๊ธฐ๋Š” ์ ์  ์–ด๋ ค์›Œ์ง„๋‹ค. - -#### ๐Ÿˆ ๋ฐฑ์˜คํ”„ ์ „๋žต ์‚ฌ์šฉํ•˜๊ธฐ - -> ๋ฐฑ์˜คํ”„๋ž€ **๋น„์„ ํ˜•์œผ๋กœ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•**์œผ๋กœ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐฑ์˜คํ”„ ์‹œ๊ฐ„์˜ ์ƒํ•œ์„ ์„ ์ •ํ•ด์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€์ง€ ์•Š๊ฒŒ ํ•˜์ž. - -#### ๐Ÿ““ ์ž ๊น ๋ฐฑ์˜คํ”„์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๊ณ  ๊ฐ€์ž\[chat gpt ๋‹ต๋ณ€ ์ฐธ๊ณ ] - -> ๋ฐฑ์˜คํ”„ ์ „๋žต(Backoff Strategy)์€ ์ฃผ๋กœ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ „๋žต ์ค‘ ํ•˜๋‚˜๋กœ, ์ผ์‹œ์ ์ธ ๋ฌธ์ œ ๋˜๋Š” ํ˜ผ์žก ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ด ์ „๋žต์€ ์ฃผ๋กœ ์žฌ์‹œ๋„(retry) ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค. - -**๋™์ž‘ ๊ณผ์ •** - -1. ์ผ์‹œ์  ๋ฌธ์ œ ๋ฐœ์ƒ: ๋ฐ์ดํ„ฐ ํŒจํ‚ท ์ „์†ก์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์‘๋‹ต์ด ์—†๋Š” ๋“ฑ์˜ ์ผ์‹œ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. -2. ์žฌ์‹œ๋„ ๊ฒฐ์ •: ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ๋‹ค์Œ ์‹œ๋„๋ฅผ ํ•˜์ง€ ์•Š๊ณ , ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ๋‹ค์‹œ ์‹œ๋„ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. -3. ๊ธฐ๋‹ค๋ฆผ(๋ฐฑ์˜คํ”„) - -* ์žฌ์‹œ๋„๋ฅผ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ •ํ•ฉ๋‹ˆ๋‹ค. -* ์ด๋•Œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ์ •๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์ˆ˜์ ์ธ ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. - ์ฆ‰, ์ฒ˜์Œ์—๋Š” ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€, ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ ์ฐจ ๋” ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. - ์ด๋กœ์จ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ํ”ผํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ๊ธฐํšŒ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -4. ์žฌ์‹œ๋„: ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. - -**๋ฐฑ์˜คํ”„ ์ „๋žต์˜ ์žฅ์ ** - -* ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ํŒจํ‚ท ์†์‹ค, ์ง€์—ฐ, ํ˜ผ์žก ๋“ฑ์˜ ๋ฌธ์ œ์— ์œ ์šฉํ•˜๊ฒŒ ์ ์šฉ -* ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฆ‰์‹œ ์žฌ์‹œ๋„ํ•˜์ง€ ์•Š๊ณ , ์ž ์‹œ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์žฌ์‹œ๋„ํ•จ์œผ๋กœ์จ ์ผ์‹œ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ์— ๊ธฐ์—ฌ - -**๋ฐฑ์˜คํ”„ ์˜ˆ์‹œ ์ฝ”๋“œ๊ฐ€ ๋ญ๊ฐ€ ์žˆ์–ด?** - -> ๋ฐฑ์˜คํ”„ ์ „๋žต์€ ์ฃผ๋กœ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋ฉฐ, ์ฝ”๋“œ๋กœ ๊ตฌํ˜„๋  ๋•Œ๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ๋กœ, ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ์žฌ์‹œ๋„ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฑ์˜คํ”„ ์ „๋žต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. - -์ด ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ๋Š” sendDataToServer() ํ•จ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋ฉฐ, ๋žœ๋คํ•œ ์„ฑ๊ณต๋ฅ ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ๋ฐฑ์˜คํ”„ ์ „๋žต์„ ์ ์šฉํ•˜์—ฌ ์žฌ์‹œ๋„ํ•˜๊ณ , ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์žฌ์‹œ๋„์™€ ๊ธฐ๋‹ค๋ฆผ์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ๋„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. - -```java -import java.util.Random; - -public class BackoffExample { - - public static void main(String[] args) { - int maxRetries = 3; - int retryDelay = 1000; // 1000 milliseconds = 1 second - int currentRetry = 0; - - while (currentRetry < maxRetries) { - boolean success = sendDataToServer(); - - if (success) { - System.out.println("Data sent successfully!"); - break; - } else { - System.out.println("Data sending failed. Retrying..."); - currentRetry++; - - if (currentRetry < maxRetries) { - System.out.println("Waiting before retrying..."); - try { - Thread.sleep(retryDelay); // Wait before retrying - } catch (InterruptedException e) { - e.printStackTrace(); - } - } else { - System.out.println("Max retries reached. Giving up."); - } - } - } - } - - public static boolean sendDataToServer() { - // Simulate data sending with a random success rate - Random random = new Random(); - double successRate = 0.7; // Simulate 70% success rate - return random.nextDouble() < successRate; - } -} -``` - -#### ๐Ÿˆ ์ฒœ๋‘ฅ๋–ผ ํ˜„์ƒ์„ ๋Œ€๋น„ํ•˜์—ฌ ๋ฐฑ์˜คํ”„ ์ „๋žต์— ์ง€ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž. - -**์ง€ํ„ฐ๋ž€** - -> ์ž„์˜์˜ ์ง€์—ฐ์‹œ๊ฐ„, ์‹œ๊ฐ„์˜ ๋ถˆ๊ทœ์น™ํ•œ ๋ณ€๋™์ด๋‚˜ ๋ถˆ๊ทœ์น™ํ•œ ๊ฐ„๊ฒฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์šฉ์–ด๋กœ ์ฃผ๋กœ ๋„คํŠธ์›Œํฌ๋‚˜ ํƒ€์ด๋ฐ๊ณผ ๊ด€๋ จ๋œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. - -> ์ฒœ๋‘ฅ๋–ผ ํ˜„์ƒ์œผ๋กœ ๋ณต๊ตฌ ์ค‘์ด๋˜ ์„œ๋น„์Šค ๋‹ค์šด์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ง€ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋“ค์€ ํŠน์ • ๋ฒ”์œ„์—์„œ ์ž„์˜์˜ ๊ฐ’์„ ๋ฐฑ์˜คํ”„ ์‹œ๊ฐ„์— ๋”ํ•œ๋‹ค. - -* ์ง€ํ„ฐ๋Š” ์˜ˆ์ƒ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๊ณผ ์‹ค์ œ ๋ฐœ์ƒํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ฃผ๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์˜ ์ „์†ก ๊ฐ„๊ฒฉ์ด๋‚˜ ๋””์ง€ํ„ธ ์‹ ํ˜ธ์˜ ํƒ€์ด๋ฐ ๋“ฑ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. -* ์˜ˆ๋ฅผ ๋“ค์–ด, ์Œ์„ฑ ๋˜๋Š” ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†กํ•˜๋Š” ๊ฒฝ์šฐ, ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ๋“ฑ์œผ๋กœ ์ธํ•ด ์‹ค์ œ ์ „์†ก ๊ฐ„๊ฒฉ์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ **์‹œ๊ฐ„์ ์ธ ๋ถˆ๊ทœ์น™์„ฑ**์„ ์ง€ํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. -* ์ง€ํ„ฐ๋Š” ํ†ต์‹  ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์œผ๋กœ, ์ง€ํ„ฐ๊ฐ€ ํฌ๋ฉด ์‹ ํ˜ธ์˜ ๋„์ฐฉ ์‹œ๊ฐ„์ด ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ๋˜์–ด ์Œ์„ฑ์ด๋‚˜ ์˜์ƒ ๋ฐ์ดํ„ฐ์—์„œ ์†Œ๋ฆฌ๋‚˜ ์˜์ƒ์ด ๋Š๊ธฐ๊ฑฐ๋‚˜ ๋ถˆ์•ˆ์ •ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. -* ๋”ฐ๋ผ์„œ ํ†ต์‹  ์‹œ์Šคํ…œ ์„ค๊ณ„๋‚˜ ๊ด€๋ฆฌ์—์„œ ์ง€ํ„ฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ์‹ ํ˜ธ์˜ ์•ˆ์ •์„ฑ๊ณผ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š” - -**์ฒœ๋‘ฅ๋–ผ ํ˜„์ƒ์ด๋ž€** - -> ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„์— ์ผ์‹œ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์ ์œผ๋กœ ์žฅ์• ๋ฅผ ๊ฒช๋Š” ์ƒํ™ฉ์—์„œ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฐฑ์˜คํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ชจ๋‘๊ฐ€ ๋™์‹œ์— ์š”์ฒญ์„ ๋‹ค์‹œ ๋ณด๋‚ด๋Š” ํ˜„์ƒ - -#### ๐Ÿ““ ๋ฐฑ์˜คํ”„ ์ „๋žต๊ณผ ์ง€ํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ ์šฉํ•œ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐ - -1. ๊ฐ€์ • - -* A์™€ B๋ผ๋Š” ๋‘ ๋Œ€์˜ ์ปดํ“จํ„ฐ๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. -* A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ B์—๊ฒŒ ๋ณด๋‚ด๋ ค๊ณ  ํ•  ๋•Œ, **๋„คํŠธ์›Œํฌ ์ง€์—ฐ๊ณผ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.** - -2. ๋ฐฑ์˜คํ”„ ์ „๋žต - -* A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด **์ผ์ • ์‹œ๊ฐ„(๋ฐฑ์˜คํ”„ ํƒ€์ž„) ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์žฌ์ „์†ก์„ ์‹œ๋„**ํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค. -* ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฐฑ์˜คํ”„ ํƒ€์ž„์„ ์ง€์ •ํ•˜๊ณ  ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. - -3. ์ง€ํ„ฐ ์ถ”๊ฐ€ - -* ์ง€ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐฑ์˜คํ”„ ํƒ€์ž„์— ๋ถˆ๊ทœ์น™์„ฑ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋™์ผํ•œ ๋ฐฑ์˜คํ”„ ํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์žฌ์ „์†ก์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ๋” ํ˜ผ์žกํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. - -4. ์˜ˆ์‹œ - -> ์•„๋ž˜๋Š” ๋ฐฑ์˜คํ”„ ์ „๋žต๊ณผ ์ง€ํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ ์šฉํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ. ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•œ ์˜ˆ์‹œ์ด๋ฏ€๋กœ ์‹ค์ œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์กฐ์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. - -```java -import java.util.Random; - -public class BackoffWithJitterExample { - public static void main(String[] args) { - int backoffTime = 1000; // ์ดˆ๊ธฐ ๋ฐฑ์˜คํ”„ ํƒ€์ž„ (1์ดˆ) - Random random = new Random(); - - for (int attempt = 1; attempt <= 5; attempt++) { - System.out.println("Attempt #" + attempt); - - // Simulate network collision - if (random.nextInt(100) < 50) { - System.out.println("Collision occurred"); - - // Apply backoff with jitter - int jitter = random.nextInt(backoffTime); - int waitTime = backoffTime + jitter; - - System.out.println("Applying backoff with jitter: " + waitTime + " ms"); - try { - Thread.sleep(waitTime); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } else { - System.out.println("Data sent successfully"); - break; - } - - // Exponential backoff: double the backoff time for next attempt - backoffTime *= 2; - } - } -} - -``` - -#### ๐Ÿˆ ์‹คํŒจํ•œ ์š”์ฒญ์— ๋ฌดํ„ฑ๋Œ€๊ณ  ์žฌ์‹œ๋„ ํ•˜์ง€๋Š” ๋ง์ž - -> ์„ค๊ณ„ ์‹œ์ ์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ์—ผ๋‘์— ๋‘์ง€ ์•Š์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฐจ๋ผ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— **ํฌ๋ž˜์‹œ**ํ•˜๋„๋ก ๋†”๋‘๋Š” ํŽธ์ด ๋‚ซ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ๋นจ๋ฆฌ ์‹คํŒจํ•˜๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค. - -**์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํฌ๋ž˜์‹œ** - -* ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด "ํฌ๋ž˜์‹œ"ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜ ๋˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์œผ๋กœ ์ธํ•ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ์ƒํ™ฉ -* ๋นจ๋ฆฌ ์‹คํŒจํ•˜๋ฉด ์‚ฌ๋žŒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋Œ€์ฒ˜ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. -* ์‹คํŒจ ์ƒํ™ฉ์„ ์ „ํŒŒํ•˜๋Š” ๋ฐฉ์•ˆ์„ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋ฉฐ, ์‰ฝ๊ฒŒ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋„๋ก **์—๋Ÿฌ ๊ด€๋ จ ์ •๋ณด๋Š” ๋ฐ˜๋“œ์‹œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.** - -### 2. ์žฌ์‹œ๋„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์ž ์ข‹์€ ๋ฐฉ๋ฒ• : ์‹œ์Šคํ…œ์— ๋ฉฑ๋“ฑ์„ฑ์„ ๋ถ€์—ฌํ•˜์ž - -#### ๐Ÿˆ ๋ฉฑ๋“ฑ์„ฑ ์žˆ๋Š” ์‹œ์Šคํ…œ ๊ตฌํ˜„ - -> ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์›น ์„œ๋น„์Šค์˜ ์ฃผ๋ฌธ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ฃผ๋ฌธ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ด ๋•Œ ๋ฉฑ๋“ฑ์„ฑ์˜ ์›์น™์„ ์ง€ํ‚ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค - -**์˜ˆ์‹œ** - -1. ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹œ๋„ 1ํšŒ: ์‚ฌ์šฉ์ž A๊ฐ€ ์ƒํ’ˆ X๋ฅผ ์ฃผ๋ฌธํ•˜๋ ค๊ณ  ํ•จ. ์ฃผ๋ฌธ์ด ์ƒ์„ฑ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋จ. -2. ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹œ๋„ 2ํšŒ: ์‚ฌ์šฉ์ž A๊ฐ€ ๋™์ผํ•œ ์ƒํ’ˆ X๋ฅผ ๋‹ค์‹œ ์ฃผ๋ฌธํ•˜๋ ค๊ณ  ํ•จ. -3. ๋ฉฑ๋“ฑ์„ฑ์„ ์ง€ํ‚จ๋‹ค๋ฉด ์ด ์ž‘์—…์€ ์ด์ „์— ์ฃผ๋ฌธ์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ๋™์ผํ•œ ์ฃผ๋ฌธ์„ ์ค‘๋ณต ์ƒ์„ฑํ•˜์ง€ ์•Š์•„์•ผ ํ•จ. -4. ์ฃผ๋ฌธ์€ ์ด๋ฏธ ์กด์žฌํ•˜๋ฏ€๋กœ ์ƒˆ๋กœ์šด ์ฃผ๋ฌธ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•„์•ผ ํ•จ. -5. ์ด๋ ‡๊ฒŒ ๋ฉฑ๋“ฑ์„ฑ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ์ค‘๋ณต ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ์ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹ค์–‘ํ•œ ์ž‘์—…์ด๋‚˜ API ํ˜ธ์ถœ์—์„œ ๋ฉฑ๋“ฑ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ค‘๋ณต ์ž‘์—…์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. - -**๋ฉฑ๋“ฑ์„ฑ์ด๋ž€?** - -> ๋™์ผํ•œ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋จ์„ ๋งํ•œ๋‹ค. ๋ชจ๋“  ์ž‘์—…์„ ๋ฉฑ๋“ฑ ์ž‘์—…์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ์Šคํ…œ ์ƒํ˜ธ์ž‘์šฉ์ด ํ›จ์”ฌ ํŽธํ•ด์ง€๋ฉฐ ์—๋Ÿฌ๋„ ํ˜„์ €ํžˆ ์ค„์–ด๋“ ๋‹ค, - -1. ์˜ˆ๋ฅผ ๋“ค์–ด **์–ด๋–ค ๊ฐ’์„ ํ•ด์‹œ์…‹์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ฉฑ๋“ฑ ์ž‘์—…**์ด๋‹ค. - -* ์ด์œ ๋Š” ๋ช‡ ๊ฐœ์˜ ๊ฐ’์„ ์ง‘์–ด๋†“๋˜์ง€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -2. ์›๊ฒฉ API๋„ **ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ ์š”์ฒญ๋งˆ๋‹ค ์œ ์ผํ•œ ID๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ํ•˜๋ฉด** ๋ฉฑ๋“ฑ์„ฑ ๊ตฌํ˜„ ๊ฐ€๋Šฅ - -* ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žฌ์‹œ๋„ํ•  ๋•Œ ์‹คํŒจํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์š”์ฒญ ID๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋œ๋‹ค. -* ๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„๋Š” ์ด๋ฏธ ํ•ด๋‹น ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋œ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์ž‘์—… ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. - -### 3. ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•˜์ž. - -#### ๐Ÿˆ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค. - -> ๋” ์ด์ƒ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๋„คํŠธ์›Œํฌ ์†Œ์ผ“, ํŒŒ์ผ ํ•ธ๋“ค ๋ชจ๋‘ ํ•ด์ œํ•˜์ž. - -1. ์šด์˜์ฒด์ œ๋Š” ํŒŒ์ผ ํ•ธ๋“ค๊ณผ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์„ ์œ„ํ•œ ๊ณต๊ฐ„์ด ์ •ํ•ด์กŒ๋Š”๋ฐ ๊ฐ€๋“ ์ฐจ๋ฉด, ์ƒˆ๋กœ ํ•ธ๋“ค, ์†Œ์ผ“ ๋ชจ๋“  ์ž‘์—…์ด ์‹คํŒจํ•œ๋‹ค. -2. ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์ด ๋ˆ„์ˆ˜๋˜๋ฉด ๋ถˆํ•„์š”ํ•œ ์—ฐ๊ฒฐ์— ๊ณ„์† ๋‚จ์•„์žˆ์–ด ์—ฐ๊ฒฐ ํ’€์ด ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋œ๋‹ค. -3. f.close๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ์ฝ”์Šค ์‹คํ–‰ ์‹คํŒจ๋กœ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ๋‹ซ์ง€ ๋ชปํ•˜๊ธฐ ๋–„๋ฌธ์— ๊ฐœ๋ฐœ ์–ธ์–ด๊ฐ€ ์ž๋™ํ•ด์ œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด `try/finally`๋กœ ํŒŒ์ผ ํ•ธ๋“ค ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ซ๊ฒŒ ํ•ด์ค˜์•ผ ํ•จ - -``` -f = open(`foo.txt`, 'w') -#... -f.close() -``` - -4. ํ˜„๋Œ€ ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ์ž๋™๋ฆฌ์†Œ์Šค ํ•ด์ œ ์ง€์›, rust๋Š” `์†Œ๋ฉธ์ž ๋ฉ”์†Œ๋“œ`๋กœ, ํŒŒ์ด์ฌ์€ `with ๊ตฌ๋ฌธ` - -``` -with open('foo.txt') as f: -#... -``` - -## ๋ฌธ์ œ ์›์ธ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๋กœ๊น… ๋ฐฉ๋ฒ• - -### ํ”„๋กค๋กœ๊ทธ - -#### ๐Ÿˆ ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋Š” ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ• - -> ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์šด์˜ํ•˜๊ณ  ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์ž. ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•ด์„œ ์šด์˜์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๊ทธ ์–‘ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž. ๋กœ๊ทธ๋Š” ์›์ž์ ์ด๊ณ  ๋น ๋ฅด๋ฉฐ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ค„์•ผ ํ•œ๋‹ค. - -1. ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์–ธ์ œ ์–ด๋–ค ๊ฒƒ์„ ๋กœ๊ทธ์— ๊ธฐ๋กํ•  ์ง€ ์ œ์–ดํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ •๊ตํ•œ `๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ`๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. -2. ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ด์šฉํ•ด ๋กœ๊ทธ ์–‘ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ ํ˜•์‹ ์ œ์–ด ๊ฐ€๋Šฅ - -#### ๐Ÿ““ java์˜ ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - -> ์ด ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์„ ํƒํ•  ๋•Œ ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š” - -**1. Log4j 2** - -* Apache Log4j 2๋Š” Java์˜ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. -* ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ๋Œ€์ƒ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ณ , ๋กœ๊น… ๋ ˆ๋ฒจ ๋ฐ ๋กœ๊ทธ ํ˜•์‹ ์„ค์ • ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. - -**2. SLF4J (Simple Logging Facade for Java)** - -* SLF4J๋Š” ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ถ”์ƒ ๊ณ„์ธต์œผ๋กœ, ๋‹ค์–‘ํ•œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์ฃผ๋กœ ๋กœ๊ทธ API์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ฝ”๋“œ ์ˆ˜์ •์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์ œ๋กœ SLF4J๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Logback์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. - -\*\*3. Logback \*\* - -* Logback์€ SLF4J์˜ ๊ตฌํ˜„์ฒด๋กœ, Log4j์˜ ํ›„์† ์ œํ’ˆ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๊ฒƒ์œผ๋กœ Logback์€ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์œผ๋กœ๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณต์žกํ•œ ์„ค์ • ๋ฐ ์œ ์—ฐํ•œ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. - -**4. java.util.logging (JUL)** - -* ์ž๋ฐ” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, JUL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜์ง€ ์•Š๋Š”๋‹ค. -* ๊ธฐ๋Šฅ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๊ฐ€๋ณ๊ณ  ํ‘œ์ค€ํ™”๋œ ๋กœ๊น…์„ ์œ„ํ•œ ์„ ํƒ์ง€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -**5. Log4j 1** - -* Apache Log4j 1์€ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์œ ๋ช…ํ•˜๋ฉฐ ์˜ˆ์ „๋ถ€ํ„ฐ ๋งŽ์ด ์‚ฌ์šฉ๋˜์–ด์™”์œผ๋‚˜ ํ˜„์žฌ๋Š” Log4j 2์™€ ๋น„๊ตํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ๋ณด์•ˆ ์ด์Šˆ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. - -### 1. ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์‚ฌ์šฉํ•˜์ž - -> ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์šด์˜์ž๊ฐ€ ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋ฉ”์„ธ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ง€์›ํ•œ๋‹ค. - -1. ์šด์˜์ž๊ฐ€ ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•˜๋ฉด ์„ค์ •ํ•œ ๋ ˆ๋ฒจ๋ณด๋‹ค ์ƒ์œ„ ๋ ˆ๋ฒจ์˜ ๋กœ๊ทธ๋Š” ๋ชจ๋‘ ๊ธฐ๋ก๋˜๋Š” ๋ฐ˜๋ฉด\*\* ๊ทธ๋ณด๋‹ค ๋‚ฎ์€ ๋ ˆ๋ฒจ์˜ ๋กœ๊ทธ๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.\*\* -2. ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ์ƒ์„ธํ•œ ๋””๋ฒ„๊น… ๋กœ๊ทธ๋ถ€ํ„ฐ ์ •์ƒ์ ์ธ ์šด์˜ ์ƒํ™ฉ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ธฐ๋ก๋˜๋Š” ๋กœ๊ทธ๊นŒ์ง€, ์ฃผ์–ด์ง„ ์ƒํ™ฉ์— ๋งž์ถฐ์„œ ๋กœ๊ทธ์˜ ์–‘ ์กฐ์ ˆ ๊ฐ€๋Šฅ - -#### ๐Ÿˆ ์˜ˆ์ œ - -> ์ž๋ฐ”์˜ log4j.properties ํŒŒ์ผ์˜ ์ผ๋ถ€๋กœ์„œ, ๋ฃจํŠธ์—๋Š” ERROR ๋ ˆ๋ฒจ์˜ ์ƒ์„ธํ•œ ๋กœ๊ทธ ์ง€์ •ํ•˜๊ณ  com.foo.bar ํŒจํ‚ค์ง€ ๋‚ด์˜ ์ฝ”๋“œ์—์„œ๋Š” INFO ๋ ˆ๋ฒจ์˜ ๋กœ๊ทธ ์ง€์ • - -```JAVA -# ๋ฃจํŠธ ๋กœ๊ฑฐ์—๋Š” ERROR **ํ…์ŠคํŠธ**๋ ˆ๋ฒจ์„ ์ง€์ •ํ•˜๊ณ  fout๋ผ๋Š” ์ด๋ฆ„์˜ FileAppender๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค, -log4j.rootLogger = Error, fout -# com.foo.bar ํŒจํ‚ค์ง€๋Š” INFO ๋ ˆ๋ฒจ ์ง€์ • -log4j.logger.com.foo.bar = INFO -``` - -#### ๐Ÿˆ ๋กœ๊ทธ ๋ ˆ๋ฒจ์˜ ๋ถ„๋ฅ˜ - -1. TRACE - -> ์ •๋ฆฌํ•˜์ž๋ฉด, -> -> * ์˜ˆ์‹œ: ํŠน์ • ๋ฉ”์†Œ๋“œ๋‚˜ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋กœ๊น…ํ•˜์—ฌ ๋””๋ฒ„๊น… ์‹œ ํ˜ธ์ถœ ํ๋ฆ„์„ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ. -> * ์ ์šฉ ๋ฐฉ๋ฒ•: ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” TRACE ๋ ˆ๋ฒจ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ž‘์—…์ด๋‚˜ ๋ฉ”์†Œ๋“œ์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋กœ๊น… - -* **ํŠน์ • ํŒจํ‚ค์ง€๋‚˜ ํด๋ž˜์Šค์—๋งŒ ์ผœ์ง€๋ฉฐ ์ตœ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅ**ํ•˜๋Š” ๋ ˆ๋ฒจ -* ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ด์™ธ์—์„œ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค. -* **์ค„ ๋‹จ์œ„ ๋กœ๊ทธ๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ™•์ธ**ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ -* TRACE ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด๋ผ๋ฉด ๋กœ๊ทธ ์ถœ๋ ฅ ๋Œ€์‹ , `๋””๋ฒ„๊ฑฐ`๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ณผ์ •์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค - -2. DEBUG - -> ์ •๋ฆฌํ•˜์ž๋ฉด, -> -> * ์˜ˆ์‹œ: ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘๊ฐ„ ๊ณผ์ •์„ ๋กœ๊น…ํ•˜์—ฌ ๋””๋ฒ„๊น… ์‹œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ. -> * ์ ์šฉ ๋ฐฉ๋ฒ•: ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” DEBUG ๋ ˆ๋ฒจ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์š”ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ ๋˜๋Š” ์ค‘๊ฐ„ ๊ณผ์ •์„ ๋กœ๊น… - -* **ํ”„๋กœ๋•์…˜ ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ ํ•ฉํ•œ ๋ ˆ๋ฒจ**์ด๋‹ค. -* ๋””๋ฒ„๊ทธ ๋ ˆ๋ฒจ ๋กœ๊น…์„ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉ ์‹œ ๋””๋ฒ„๊น… ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค. -* ์ด๋Ÿฐ ๋ฉ”์„ธ์ง€๋Š” TRACE ๋ ˆ๋ฒจ๋กœ ์ง€์ •ํ•˜์ž. - -3. INFO - -> ์ •๋ฆฌํ•˜์ž๋ฉด, -> -> * ์˜ˆ์‹œ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ์‹œ์ , ์„œ๋น„์Šค ํฌํŠธ ์„ค์ • ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ๋กœ๊น…ํ•  ๋•Œ ์‚ฌ์šฉ. -> * ์ ์šฉ ๋ฐฉ๋ฒ•: ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” INFO ๋ ˆ๋ฒจ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋กœ๊น… - -* **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์— ๋Œ€ํ•ด ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๋งŒํ•œ ์ •๋ณด**๋ฅผ ์œ„ํ•œ ๋ ˆ๋ฒจ์ด๋‹ค. -* ์ฆ‰ ๋ฌธ์ œ์ ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๋‹ค. -* ๋ณดํ†ต `์„œ๋น„์Šค ์‹œ์ž‘` ์ด๋‚˜ `5050๋ฒˆ ํฌํŠธ ์‚ฌ์šฉ`๊ณผ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ๋ฉ”์„ธ์ง€๋ฅผ ์ด INFO ๋ ˆ๋ฒจ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. -* INFO๋Š” **๊ธฐ๋ณธ ๋กœ๊ทธ ๋ ˆ๋ฒจ์ด๋‹ˆ, ์‹œ์‹œํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์ง€ ๋ง์ž.** -* `๋งŒ์•ฝ์„ ์œ„ํ•œ` ๋กœ๊ทธ๋Š” TRACE๋‚˜ DEBUG๋ ˆ๋ฒจ๋กœ ์ถœ๋ ฅํ•˜์ž -* INFO ๋ ˆ๋ฒจ ๋กœ๊ทธ๋Š” ์ •์ƒ์ ์ธ ์šด์˜ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. -* ๋Ÿฌ์ŠคํŠธ์—์„œ INFO ๋ ˆ๋ฒจ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์‹œ - -> ์š”์ฒญ์ด ์‹คํŒจํ•œ ์›์ธ์„ ์œ ๋ฐœํ•œ ์—๋Ÿฌ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿฐ๋ฐ๋„ info ๋ ˆ๋ฒจ์„ ์“ด ์ด์œ ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ๋Œ€์‘ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - -```RUST -info!("Failed request : {}, retrying", e); -``` - -4. WARN - -> ์ •๋ฆฌํ•˜์ž๋ฉด, -> -> * ์˜ˆ์‹œ: ์„œ๋น„์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•œ๊ณ„์น˜์— ๋‹ค๋‹ค๋ฅธ ์ƒํ™ฉ์ด๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์„ ๋กœ๊น…ํ•˜์—ฌ ๊ฒฝ๊ณ ํ•  ๋•Œ ์‚ฌ์šฉ. -> * ์ ์šฉ ๋ฐฉ๋ฒ•: ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” WARN ๋ ˆ๋ฒจ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๊ณ ํ•  ๋งŒํ•œ ์ƒํ™ฉ์„ ๋กœ๊น… - -* **์ž ์žฌ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋  ๋งŒํ•œ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ**์„ ์œ„ํ•œ ๋ ˆ๋ฒจ -* ์–ด๋–ค `๋ฆฌ์†Œ์Šค๊ฐ€ ํ•œ๊ณ„์น˜์— ๋‹ค๋‹ค๋ฅด๊ณ  ์žˆ๋‹ค๋ฉด` ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ ์ ํ•ฉ -* WARN ๋ ˆ๋ฒจ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅ ํ•  ๋•Œ๋Š” ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ํ™•์ธํ•œ ์‚ฌ๋žŒ์ด ์ทจํ•ด์•ผ ํ•  ๊ตฌ์ฒด์ ์ธ ๋Œ€์•ˆ์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์—†๋‹ค๋ฉด INFO๋ ˆ๋ฒจ๋กœ ์˜ฎ๊ธฐ์ž - -5. ERROR - -> ์ •๋ฆฌํ•˜์ž๋ฉด, -> -> * ์˜ˆ์‹œ: ์˜ˆ์™ธ ๋ฐœ์ƒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ์‹คํŒจ ๋“ฑ ์˜ค๋ฅ˜ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋กœ๊น…ํ•  ๋•Œ ์‚ฌ์šฉ. -> * ์ ์šฉ ๋ฐฉ๋ฒ•: ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ERROR ๋ ˆ๋ฒจ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฐ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค ๋“ฑ์„ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค. - -* ์‚ดํŽด๋ด์•ผ ํ•  ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์œ„ํ•œ ๋ ˆ๋ฒจ -* **๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ธฐ๋ก ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด ๋Œ€์ฒด๋กœ ERROR ๋ ˆ๋ฒจ ๋กœ๊ทธ์— ๊ธฐ๋ก** -* ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ •๋ณด ์ œ๊ณต -* ๊ด€๋ จ ์Šคํƒ ์ถ”๊ฐ€์ ๊ณผ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ ๋“ฑ ์ƒ์„ธํ•œ ๋‚ด์šฉ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ธฐ๋ก - -6. FATAL - -* ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์ˆ˜์ค€์˜ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ๋ฒจ -\*\* ํ”„๋กœ๊ทธ๋žจ์ด ์‹ฌ๊ฐํ•œ ์ƒํ™ฉ์— ๋งž๋‹ฅ๋œจ๋ ค ์ฆ‰์‹œ ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•œ๋‹ค๋ฉด\*\* ๊ทธ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•œ ์›์ธ์„ FATAL ๋ ˆ๋ฒจ ๋กœ๊ทธ ๊ธฐ๋ก -* ๋ณต๊ตฌ ์ง€์ ์ด๋‚˜ ๋ถ„์„ ๊ด€๋ จ ๋ฐ์ดํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ ๊ด€๋ จ๋œ ์ปจํ…์ŠคํŠธ๋„ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ก - -#### ๐Ÿ““ java ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์šฉํ•ด์„œ ๋กœ๊ทธ ๋ ˆ๋ฒจ ์ง€์ • ๋ฐฉ๋ฒ• - -**1. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•œ ๋กœ๊ทธ ๋ ˆ๋ฒจ ์ง€์ •** - -SLF4J์™€ Logback์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ง€์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. SLF4J์˜ ๋กœ๊ฑฐ(Logger) ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์†Œ๋“œ์—๋Š” ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋‹ค. - -```java -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class MyClass { - private static final Logger logger = LoggerFactory.getLogger(MyClass.class); - - public void myMethod() { - logger.trace("This is a trace level log."); - logger.debug("This is a debug level log."); - logger.info("This is an info level log."); - logger.warn("This is a warn level log."); - logger.error("This is an error level log."); - } -} -``` - -**2. ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•œ ๋กœ๊ทธ ๋ ˆ๋ฒจ ์ง€์ •** - -Logback์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” logback.xml ๋˜๋Š” logback.groovy ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ๊ฐ๊ฐ์˜ ๋กœ๊ทธ ์ถœ๋ ฅ ๋Œ€์ƒ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. - -```java - - - - - %-4relative [%thread] %-5level %logger{35} - %msg%n - - - - - - - - -``` - -### 2. ๋กœ๊ทธ๋Š” ์›์ž์ ์œผ๋กœ ์ž‘์„ฑํ•˜์ž - -#### ๐Ÿˆ ์›์ž์ ์ด๋ž€ ๋ญ˜๊นŒ.. - -> `์›์ž์ ์œผ๋กœ ์ž‘์„ฑํ•˜์ž`๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์›์น™ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ์›์น™์€ ์ž‘์—…์ด ๋” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋ถ„ํ•ด๋˜๊ฑฐ๋‚˜ ์ค‘๊ฐ„์— ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ์™„์ „ํžˆ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. - -1. ์—ฌ๊ธฐ์„œ `์›์ž์ `์ด๋ž€ ์ž‘์—…์ด ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์ตœ์†Œ ๋‹จ์œ„ -2. ์ด ๋‹จ์œ„์—์„œ ์ž‘์—…์€ ๋” ์ด์ƒ ๋ถ„ํ•ด๋˜๊ฑฐ๋‚˜ ์ค‘๋‹จ๋  ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค. ์›์ž์  ์ž‘์—…์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ํŠน์„ฑ - -* `๋ถ„ํ•ด ๋ถˆ๊ฐ€๋Šฅ(Indivisible)`: **์›์ž์  ์ž‘์—…์€ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.** ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋‹จ๊ณ„๋Š” ๋ถ„ํ•ด๋˜๊ฑฐ๋‚˜ ์žฌ์ •์˜๋˜์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค. -* `์ค‘๋‹จ ๋ถˆ๊ฐ€๋Šฅ(Undivisible)`: **์›์ž์  ์ž‘์—…์€ ์ค‘๊ฐ„์— ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ์™„์ „ํžˆ ์‹คํ–‰**๋˜์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ž‘์—…์˜ ์ผ๋ถ€๋งŒ ์‹คํ–‰๋˜๊ณ  ์ค‘๋‹จ๋˜๋ฉด ์ผ๊ด€์„ฑ๊ณผ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿˆ ๋กœ๊ทธ๋ฅผ ์›์ž์ ์œผ๋กœ ์ž‘์„ฑ - -> ๋กœ๊ทธ๋ฅผ ์›์ž์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•œ ๋ฒˆ ์ž‘์„ฑ๋˜๋ฉด ๋ถ„ํ•ด๋˜๊ฑฐ๋‚˜ ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ์™„์ „ํžˆ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ - -* ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๋Ÿฌ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ , ์ค‘๊ฐ„์— ์ž‘์—…์ด ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์ƒํƒœ๋‚˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿˆ ๋งŒ์ผ ๋ฐ์ดํ„ฐ์™€ ๊ฒฐํ•ฉํ–ˆ์„ ๋–„๋งŒ ์ •๋ณด๊ฐ€ ์œ ์šฉํ•˜๋‹ค๋ฉด - -1. ํ•œ ๋ฉ”์„ธ์ง€์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ์›์ž์ ์œผ๋กœ ์ €์žฅํ•˜์ž. -2. ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋Š” ๊ด€๋ จ ์ •๋ณด๋ฅผ ํ•œ ์ค„์— ํ‘œํ˜„ํ•˜๋Š” ๋กœ๊ทธ๋ฅผ ๋” ์ž˜ ์ฒ˜๋ฆฌ - -> but, ํŠน์ • ์ˆœ์„œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋กœ๊ทธ ์ •๋ ฌ ์‹œ ์‹œ์Šคํ…œ ์‹œ๊ฐ„์— ์˜์กดํ•˜์ง€๋ง์ž. ์‹œ์Šคํ…œ ์‹œ๊ฐ„์€ ๋ฆฌ์…‹๋˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŠธ ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ - -3. ๋กœ๊ทธ ๋ฉ”์„ธ์ง€์— ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋„ ํ”ผํ•˜์ž => ํŠนํžˆ WARNING ๋กœ๊ทธ์— ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ฉ”์„ธ์ง€์™€ ํ˜ผํ•ฉ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— **ํ•œ ์ค„๋กœ ์ถœ๋ ฅ ๋ถˆ๊ฐ€ํ•˜๋‹ค๋ฉด ๊ณ ์œ ํ•œ ID๋ฅผ ํฌํ•จ์‹œ์ผœ ๋‚˜์ค‘์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž.** - -### 3. ๋กœ๊ทธ๋Š” ์‹ ์†ํ•˜๊ฒŒ ๊ธฐ๋กํ•˜์ž. - -> ๋กœ๊ทธ๋ฅผ ๋„ˆ๋ฌด ๊ธฐ๋กํ•˜๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. **๋กœ๊ทธ๋Š” ๋””์Šคํฌ๋‚˜ ์ฝ˜์†”, ์›๊ฒฉ ์‹œ์Šคํ…œ ๋“ฑ ์–ด๋”˜๊ฐ€์— ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ธฐ๋ก๋˜๊ธฐ ์ „ ํ•œ ๋ฌธ์ž์—ด๋กœ ๊ฒฐํ•ฉ**ํ•ด์•ผ ํ•œ๋‹ค. - -#### ๐Ÿˆ ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ - -> ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์ง„ํ–‰๋˜๋ฉฐ, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๋ฃจํ”„์— ์•…์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค, - -1. ๊ฒฐํ•ฉ์„ ์‹œ๋„ํ•˜๋Š” ๋ฌธ์ž์—ด์ด ๋กœ๊ทธ ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌ๋˜๋ฉด ๋กœ๊ทธ ๋ ˆ๋ฒจ๊ณผ ์ƒ๊ด€ ์—†์ด ๊ฒฐํ•ฉ ์‹คํ–‰ ์ด์œ  : ์†Œ๋“œ์˜ ์ธ์ˆ˜๋Š” ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌ๊ธฐ ์•ž์„œ ํ‰๊ฐ€๊ฐ€ ์ด๋ค„์ง€๊ธฐ ๋•Œ๋ฌธ -2. ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ง€์›ํ•œ๋‹ค๋ฉด, ํŒŒ๋ผ๋ฏธํ„ฐํ™” ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜์ž -3. JAVA์˜ ๋กœ๊ทธ ํ˜ธ์ถœ ์‹œ ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ ๋ฐฉ๋ฒ• 3๊ฐ€์ง€ - -```JAVA -while(message.size() > 0){ - Message m = message.poll(); - - // ์ด ๋ฌธ์ž์—ด์€ trace ๋ ˆ๋ฒจ์ด ๋น„ํ™œ์„ฑํ™”๋ผ ์žˆ์–ด๋„ ๊ฒฐํ•ฉ์ด ์‹คํ–‰ - log.trace("got message: "+m); - - // ์ด ๋ฌธ์ž์—ด ์—ญ์‹œ trace ๋ ˆ๋ฒจ์ด ๋น„ํ™œ์„ฑํ™”๋ผ ์žˆ์–ด๋„ ๊ฒฐํ•ฉ์ด ์‹คํ–‰ - log.trace("got message : {}".format(m)); - - // ์ด ๋ฌธ์ž์—ด์€ trace ๋ ˆ๋ฒจ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ฒฐํ•ฉ์„ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋” ๋น ๋ฅด๋‹ค. => ํŒŒ๋ผ๋ฏธํ„ฐํ™” // ๋กœ๊น… - log.trace("got message : {}", m); -} -``` - -#### ๐Ÿˆ ๋กœ๊ทธ์˜ ์‹ ์†ํ•œ ๊ธฐ๋ก 1 : ํŒŒ๋ผ๋ฏธํ„ฐํ™” ๋กœ๊น… - -> ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๋กœ๊น…ํ•˜๋Š” ๊ธฐ๋ฒ•,\*\* ์ด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์‰ฝ๊ฒŒ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.\*\* ํŒŒ๋ผ๋ฏธํ„ฐํ™” ๋กœ๊น…์€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ๊ฒฐํ•ฉํ•˜๋Š” ๋Œ€์‹ , **๋ณ€์ˆ˜ ๊ฐ’์„ ํฌํ•จํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‹ค์ œ ๊ฐ’์€ ๋กœ๊น… ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜์—ฌ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑ**ํ•œ๋‹ค. - -1. ์žฅ์  - -* ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๋‚ด์— ๋ณ€์ˆ˜ ๊ฐ’์„ ์ง์ ‘ ๊ฒฐํ•ฉํ•˜๋Š” ๋Œ€์‹  ๋ณ€์ˆ˜ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ๋ช…ํ™•ํ•ด์ง„๋‹ค. -* ๋™์  ๋กœ๊น…: ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๋ณ€์ˆ˜ ๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด **ํŠน์ • ์ด๋ฒคํŠธ์˜ ์ƒํ™ฉ์— ๋งž๋Š” ๋ณ€์ˆ˜ ๊ฐ’์„ ๋กœ๊ทธ๋กœ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.** -* ๋ณด์•ˆ ๊ฐ•ํ™”: ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋กœ๊ทธ๋กœ ๋‚จ๊ธธ ๋•Œ, ๊ฐ’์„ ์ง์ ‘ ๋…ธ์ถœํ•˜๋Š” ๋Œ€์‹  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ๋กœ๊ทธ ํŒŒ์ผ์— ๋‚จ์„ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. - -```java -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class LoggingExample { - private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class); - - public static void main(String[] args) { - String username = "john_doe"; - int userId = 123; - - // ํŒŒ๋ผ๋ฏธํ„ฐํ™” ๋กœ๊น… - logger.info("User {} with ID {} logged in", username, userId); - } -} -``` - -#### ๐Ÿˆ๋กœ๊ทธ์˜ ์‹ ์†ํ•œ ๊ธฐ๋ก 2 : ๋น„๋™๊ธฐ ์–ดํŽœ๋” - -> ์–ดํŽœ๋”๋Š” ๋กœ๊น… ์‹œ์Šคํ…œ์—์„œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋””์— ๊ธฐ๋กํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์š”์†Œ๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ์–ดํŽœ๋”๋ฅผ ํ†ตํ•ด ํŠน์ •ํ•œ ์ถœ๋ ฅ ๋Œ€์ƒ์— ๊ธฐ๋ก๋˜๊ฒŒ ๋œ๋‹ค. ๋ณดํ†ต ์–ดํŽœ๋”๋Š” ๋กœ๊ทธ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. - -๋กœ๊น… ์‹œ์Šคํ…œ์—์„œ ์–ดํŽœ๋”๋Š” ๋กœ๊ทธ ์ถœ๋ ฅ์˜ ๋Œ€์ƒ๊ณผ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ‘์žฌ๋œ ๋กœ๊ทธ ์–ดํŽœ๋”๋Š” print ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜ธ์ถœ์ž์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ - -**๋น„๋™๊ธฐ ์–ดํŽœ๋”** - -> ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์–ดํŽœ๋”๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ธ”๋กํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. - -**๋น„๋™๊ธฐ ์–ดํŽœ๋”์˜ ์ž‘๋™์›๋ฆฌ** - -1. ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ๋น„๋™๊ธฐ ์–ดํŽœ๋”์—๊ฒŒ ์ „๋‹ฌ -2. `๋น„๋™๊ธฐ ์–ดํŽœ๋”`๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋กœ๊ทธ ํ(๋˜๋Š” ๋ฒ„ํผ)์— ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ ํ๋Š” ๋ณ„๋„์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค. -3. `๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ`๋Š” ๋กœ๊ทธ ํ์— ์ €์žฅ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์‹ค์ œ ์ถœ๋ ฅ ๋Œ€์ƒ(์ฝ˜์†”, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ)์œผ๋กœ ์ „๋‹ฌํ•˜๋ฉฐ, ์ด ์ž‘์—…์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์ž‘์—…๊ณผ ๋ณ„๊ฐœ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. -4. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋Š” ๋กœ๊ทธ ์ถœ๋ ฅ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์—ฐ์„ ๊ฒช์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. - -**์žฅ์ ** - -1. ๋กœ๊ทธ ์ถœ๋ ฅ ์ž‘์—…์˜ **์ง€์—ฐ์ด ๋ฐœ์ƒํ•ด๋„ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋œ ์ค€๋‹ค.** -2. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ๋กœ๊ทธ ์ถœ๋ ฅ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ๋กœ๊น… ์ž‘์—…์œผ๋กœ ์ธํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉˆ์ถค ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. -3. ๋กœ๊ทธ ์ถœ๋ ฅ ์ž‘์—…์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. - -**์ผ๊ด„ ์–ดํŽœ๋”** - -> ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ธฐ ์•ž์„œ ์šฐ์„  ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๊ด€ํ•œ๋‹ค. ์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ์—ญ์‹œ ์ฆ๊ฐˆํ•œ๋‹ค. - -1. ์šด์˜์ฒด์ œ์˜ ํŽ˜์ด์ง€ ์บ์‹œ ์—ญ์‹œ ๋ฒ„ํผ์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด์„œ ๋กœ๊ทธ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ํ–ฅ์ƒํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค. -2. ๋น„๋™๊ธฐ์™€ ์ผ๊ด„์“ฐ๊ธฐ๋Š” ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌ๋ž˜์‹œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ช€ ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๊ฐ€ ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š” ์ผ๋„ ์ƒ๊ธด๋‹ค. - -### 4. ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜์ง€ ๋ง์ž - -> ๋‹น์—ฐํ•œ ์–˜๊ธฐ๊ฐ™์ง€๋งŒ ํ”ํžˆ ์‹ค์ˆ˜ ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ URL์ด๋‚˜ HTTP ์‘๋‹ต์„ ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋ฉด ์•ˆ์ „ ์žฅ์น˜๊ฐ€ ์—†๋Š” ๋กœ๊ทธ ์ˆซ์ง‘๊ธฐ๋Š” ์ž์นซ ๊ฐœ์ธ์ •๋ณด ๋…ธ์ถœ ๋  ์ˆ˜ ์žˆ๋‹ค. diff --git a/developLog/book/onboarding/4/4-3.md b/developLog/book/onboarding/4/4-3.md deleted file mode 100644 index 5ff674f..0000000 --- a/developLog/book/onboarding/4/4-3.md +++ /dev/null @@ -1,38 +0,0 @@ -# ๊ฐœ๋ฐœ์ž ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ 4์žฅ - (3) - -## ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘ ์ธก์ •์„ ์œ„ํ•œ ์ง€ํ‘œ ํ™œ์šฉ ๋ฐฉ์•ˆ - -### 1. ํ”„๋กค๋กœ๊ทธ - -> `์ง€ํ‘œ`๋ฅผ ์ด์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. - -#### ๐Ÿˆ ์ง€ํ‘œ์˜ ์œ ์šฉ์„ฑ - -* ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€, ํ์— ์ €์žฅ๋œ ๊ฐ’์€ ๋ช‡ ๊ฐœ์ธ์ง€, ๋””์Šคํฌ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋ก๋˜๊ณ  ์žˆ๋Š”์ง€ ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์„ ์ธก์ •ํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ์ธ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, ๋””๋ฒ„๊น…์—๋„ ์œ ์šฉํ•˜๋‹ค. - -#### ๐Ÿˆ ์ง€ํ‘œ์˜ 3๊ฐ€์ง€ ์œ ํ˜• - -1. ์นด์šดํ„ฐ(counter) - -* `ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํšŸ์ˆ˜๋ฅผ ์ธก์ •`ํ•œ๋‹ค. -* ์บ์‹œ ํžˆํŠธ ์นด์šดํ„ฐ์™€ ์š”์ฒญ ์นด์šดํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ์บ์‹œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋น„์œจ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์นด์šดํ„ฐ๋Š” ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ์‹œ์ž‘ํ•  ๋•Œ 0์œผ๋กœ ๋ฆฌ์…‹๋˜๋Š” ๋™์ž‘๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค. - -2. ๊ฒŒ์ด์ง€(guage) - -* `ํ๋‚˜ ์Šคํƒ, ๋งต ํฌ๊ธฐ์˜ ํ†ต๊ณ„๊ฐ’ ์ œ์‹œ`ํ•ด์ค€๋‹ค. -* ํŠน์ • ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ธก์ •ํ•˜๋ฏ€๋กœ ๊ฐ’์ด ์˜ฌ๋ผ๊ฐ€๊ฑฐ๋‚˜ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. -* ์ž๋™์ฐจ์˜ ์†๋„๊ณ„๋‚˜ ์—ฐ๋ฃŒ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. - -3. ํžˆ์Šคํ† ๊ทธ๋žจ(histogram) - -* ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ๋ฅผ ํŠน์ • ๋ฒ”์œ„๋กœ ๊ตฌ๋ถ„ -* ๊ฐ ๋ฒ”์œ„์—๋Š” ํ•ด๋‹น ๋ฒ”์œ„ ๋‚ด์˜ ์ด๋ฒคํŠธ ๊ฐ’์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋Š” ์นด์šดํ„ฐ -* ์ฃผ๋กœ `์š”์ฒญ ์ฒ˜๋ฆฌ์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ด๋‚˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ` ๊ฐ™์€ ์ง€ํ‘œ ์ธก์ • - -**๋ฐ์ดํ„ฐ ํŽ˜์ด๋กœ๋“œ(payload)** - -* ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ํ†ต์‹ ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ, ํŒจํ‚ท์ด๋‚˜ ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ์‹ค์ œ ์ •๋ณด -* ๋‹ค์‹œ ๋งํ•ด, ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด `์ „๋‹ฌ๋˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„`์„ ์˜๋ฏธ -* ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์š”์ฒญ์—์„œ ๋ฐ์ดํ„ฐ ํŽ˜์ด๋กœ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์–‘์‹ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๋งํ•œ๋‹ค. -* ๋ฐ์ดํ„ฐ ํŽ˜์ด๋กœ๋“œ๋Š” ์ฃผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(๋ถ€๊ฐ€ ์ •๋ณด)์™€ ํ•จ๊ป˜ ์ „์†ก๋˜๋ฉฐ, ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. diff --git a/developLog/book/oop/1.md b/developLog/book/oop/1.md deleted file mode 100644 index 6a20025..0000000 --- a/developLog/book/oop/1.md +++ /dev/null @@ -1,191 +0,0 @@ -# 1์žฅ : ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ณต๋™์ฒด - -> ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•ต์‹ฌ์ด ์ž์œจ์ ์ธ ๊ฐ์ฒด๋“ค์˜ ํ˜‘๋ ฅ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ฐ•์กฐ - - - -ํ˜„์‹ค ์†์— ์กด์žฌํ•˜๋Š” ์‚ฌ๋ฌผ์„ ์ตœ๋Œ€ํ•œ ์œ ์‚ฌํ•˜๊ฒŒ ๋ชจ๋ฐฉํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๋‚ด๋ถ€์— ์˜ฎ๊ฒจ์˜ค๋Š” ์ž‘์—… - -โ‡’ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ธ ๊ฐ์ฒด์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‹ค์„ธ๊ณ„์˜ ํˆฌ์˜์ด๋ฉฐ, ๊ฐ์ฒด๋ž€ ํ˜„์‹ค ์„ธ๊ณ„์— ์กด์žฌํ•˜๋Š” ์‚ฌ๋ฌผ์— ๋Œ€ํ•œ ์ถ”์ƒํ™”๋ผ๋Š” ๊ฒƒ - -\ -ํ•˜์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์‹œ, ๊ฐ์ฒด์— ์ง์ ‘์ ์œผ๋กœ ๋Œ€์‘๋˜๋Š” ์‹ค์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ๋ฐœ๊ฒฌํ•  ํ™•๋ฅ ์€ ๊ทธ๋‹ค์ง€ ๋†’์ง€ ์•Š์œผ๋ฉฐ, ์žˆ๋‹คํ•ด๋„ ์œ ์‚ฌ์„ฑ์„ ์ฐพ๊ธฐ ์–ด๋ ค์šธ ์ •๋„ - - - -> ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๋ชฉํ‘œ๋Š” ์‹ค์„ธ๊ณ„๋ฅผ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋ฅผ ์ฐฝ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. - -์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ์€ ๋‹จ์ˆœํžˆ ์‹ค์„ธ๊ณ„๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ์•ˆ์œผ๋กœ ๋‹ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณ ๊ฐ๊ณผ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์‹ ์„ธ๊ณ„๋ฅผ ์ฐฝ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. - -\ -๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€์‘ํ•œ๋‹ค๋Š” ์–˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ? ๊ทธ๊ฒƒ์€ **์‹ค์„ธ๊ณ„์— ๋Œ€ํ•œ ๋น„์œ ๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์ดํ•ดํ•˜๊ณ  ํ•™์Šตํ•˜๋Š” ๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ด๊ธฐ ๋•Œ๋ฌธ**์ด๋‹ค. - -\ -๊ฐ์ฒด๋ฅผ ์Šค์Šค๋กœ ์ƒ๊ฐํ•˜๊ณ  ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•˜๋Š” ํ˜„์‹ค ์„ธ๊ณ„์˜ ์ƒ๋ช…์ฒด = ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ์บก์Šํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ž์œจ์„ฑ์„ ์„ค๋ช…ํ•˜๋Š”๋ฐ ํšจ๊ณผ์  - -\ -์ฆ‰, ์‹ค์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ตฌํ˜„๊นŒ์ง€ ์ด์–ด๊ฐ„๋‹ค๋Š” ๊ฐœ๋…์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ ์‚ฌ์ƒ์ธ `์—ฐ๊ฒฐ์™„์ „์„ฑ(seamlessness)`๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•œ ํ‹€์„ ์ œ๊ณตํ•œ๋‹ค. - -\ -๊ด€์ ์—์„œ๋Š” ๋ถ€์ ํ•ฉํ•˜์ง€๋งŒ ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ผ๋Š” ์šฉ์–ด์— ๋‹ด๊ธด ๊ธฐ๋ณธ ์‚ฌ์ƒ์„ ์ดํ•ดํ•˜๊ณ  ํ•™์Šตํ•˜๋Š” ๋ฐ๋Š” ๋งค์šฐ ํšจ๊ณผ์  - -## 1. ํ˜‘๋ ฅํ•˜๋Š” ์‚ฌ๋žŒ๋“ค - -๋งˆ์น˜ ๋ฐ”๋ฆฌ์Šคํƒ€, ์บ์‹œ์›์ด ์ž์‹ ์˜ ๋งก์€ ๋ฐ”์ธ ์—ญํ• ๋ฅผ ์ฑ…์ž„์„ ์ง€๊ณ  ํ˜‘๋ ฅํ•ด์„œ ์ปคํ”ผ๋ฅผ ์ฃผ๋‹ˆ ์ถœ๊ทผ์‹œ๊ฐ„์— ์ปคํ”ผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋… 3๊ฐ€์ง€๋Š” ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์ด๋‹ค. - -### 1) ์š”์ฒญ๊ณผ ์‘๋‹ต์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ˜‘๋ ฅ - -์‚ฌ๋žŒ๋“ค์€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋ฉด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์„ `์š”์ฒญ(request)`ํ•œ๋‹ค.\ -์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์š”์ฒญ์€ ์—ฐ์‡„์ ์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค. - -\ -์š”์ฒญ์„ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ์ฃผ์–ด์ง„ ์ฑ…์ž„์„ ๋‹คํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ์ง€์‹์ด๋‚˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์š”์ฒญ์— `์‘๋‹ต(response)`ํ•œ๋‹ค. - -\ -์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ˜‘๋ ฅ(collaboration)ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ์ธ๊ฐ„์œผ๋กœ ํ•˜์—ฌ๊ธˆ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๋™์ฒด๋ฅผ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค. - -### 2) ์—ญํ• ๊ณผ ์ฑ…์ž„ - -์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ˜‘๋ ฅํ•˜๋Š” ๊ณผ์ • ์†์—์„œ ํŠน์ •ํ•œ **์—ญํ• (role)**๋ฅผ ๋ถ€์—ฌ๋ฐ›๋Š”๋‹ค. - -> ์—ญํ• ์€ ์–ด๋–ค ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ํŠน์ •ํ•œ ์‚ฌ๋žŒ์ด ํ˜‘๋ ฅ ์•ˆ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์ฑ…์ž„์ด๋‚˜ ์ž„๋ฌด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. - -์˜ˆ์‹œ๋กœ ๋ฐ”๋ฆฌ์ŠคํŠธ ์—ญํ• ์„ ๋งก์€ ์‚ฌ๋žŒ์€ ์ฃผ๋ฌธ๋œ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•ด์•ผ ํ•˜๋Š” ์ฑ…์ž„์ด ์žˆ๋‹ค. ์ฆ‰, **์—ญํ• **์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ์˜๋ฏธ์ ์œผ๋กœ ์ฑ…์ž„(responsibility)์ด๋ผ๋Š” ๊ฐœ๋…์„ ๋‚ดํฌํ•œ๋‹ค.\ - - -์—ญํ• ๊ณผ ์ฑ…์ž„์€ ํ˜‘๋ ฅ์ด ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ•ต์‹ฌ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฉฐ, ์—ญํ• ์— ์ ํ•ฉํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฐœ๋…์„ ์ œ์‹œํ•œ๋‹ค. - -* ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. : ๋ฐ”๋ฆฌ์Šคํƒ€๊ฐ€ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ์ˆ˜ ๋„ ์žˆ๋Š” ๊ฑฐ์ž„ -* ์—ญํ• ์€ ๋Œ€์ฒด ๊ฐ€๋Šฅ์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค. : ์†๋‹˜ ์ž…์žฅ์—์„œ๋Š” ์ฃผ๋ฌธ์ž๋Š” ๋Œ€์ฒด ๊ฐ€๋Šฅ(substituable)ํ•˜๋‹ค. -* ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ž์œจ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. : ๋ฐ”๋ฆฌ์Šคํƒ€๋Š” ์ž์‹ ๋งŒ์˜ ๋…ํŠนํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ฑฐ๋‚˜ ๋˜ ๋‹ค๋ฅธ ๋ฐ”๋ฆฌ์Šคํƒ€๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. -* ์ฆ‰, ์ปคํ”ผ ์ œ์กฐ๋ผ๋Š” ๋™์ผํ•œ ์š”์ฒญ์„ ๋ฐ›๋”๋ผ๋„ ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ - -> ์ด์ฒ˜๋Ÿผ ๋™์ผํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๋‹คํ˜•์„ฑ(polymorphism)์ด๋ผ๊ณ  ํ•œ๋‹ค. - -* ํ•œ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. : ํ•œ ์‚ฌ๋žŒ์ด ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ์—ญํ• ๊ณผ ์บ์‹œ์–ด ๋™์‹œ์— ์ˆ˜ํ–‰๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. - -## 2. ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ - -### 1) ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด๋“ค - -> ์‚ฌ๋žŒ์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๊ฐ์ฒด๋กœ, ์—์ด์ „ํŠธ์˜ ์š”์ฒญ์„ ๋ฉ”์„ธ์ง€๋กœ, ์—์ด์ „ํŠธ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฉ”์„œ๋“œ๋กœ ๋ฐ”๊พธ๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ผ๋Š” ๋ฌธ๋งฅ์œผ๋กœ ์˜ฎ๊ฒจ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. - -\ -์œ„์˜ ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์„ธ๊ณ„์˜ ๋ชจ๋ฐฉ์ด๋ผ๋Š” ์€์œ ๋ฅผ ์ฐจ์šฉํ•˜๋Š” ์ด์œ \ - - -### 2) ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด๋“ค - -> ์—ญํ• ์€ ์œ ์—ฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์„ค๊ณ„ ์š”์†Œ์ด๋‹ค. ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ์—ญํ• ๊ณผ ์ฑ…์ž„์€ ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ค‘์š”ํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ๋‹คํ˜•์„ฑ๊ณผ๋„ ๊นŠ์ด ์—ฐ๊ด€ - -1. ์‚ฌ๋žŒ๋“ค์€ ์ปคํ”ผ ์ฃผ๋ฌธ๊ณผ ๊ฐ™์€ ํŠน์ •ํ•œ ๋ชฉํ‘œ๋ฅผ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅ -2. ํ˜‘๋ ฅ์˜ ํ•ต์‹ฌ : ํŠน์ •ํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ๋“ค ๊ฐ„์˜ ์—ฐ์‡„์ ์ธ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ†ตํ•ด ๋ชฉํ‘œ ๋‹ฌ์„ฑ -3. ๋ชฉํ‘œ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ํ˜‘๋ ฅ์„ ํ†ตํ•ด ๋‹ฌ์„ฑ, ๋” ์ž‘์€ ์ฑ…์ž„์œผ๋กœ ๋ถ„ํ• ๋˜๊ณ  ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ์—ญํ• ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์— ์˜ํ•ด ์ˆ˜ํ–‰ -4. ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ ๊ฐœ์ธ์€ ์ฑ…์ž„ ์ˆ˜ํ–‰์„ ์œ„ํ•ด ๋„์›€์„ ์š”์ฒญํ•˜๊ธฐ๋„, ์—ฐ์‡„์ ์ธ ์š”์ฒญ๊ณผ ์‘๋‹ต์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํ˜‘๋ ฅ ๊ด€๊ณ„ ์™„์„ฑ - -\ -๊ฐ์ฒด ๊ณต๋™์ฒด ์•ˆ์— ์‚ด๊ณ  ์žˆ๋Š” ์„ฑ์‹คํ•œ ๊ฐ์ฒด ์‹œ๋ฏผ์€ ์ž์‹ ์—๊ฒŒ ์ฃผ์–ด์ง„ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ๋‹คํ•˜๋Š” ๋™์‹œ์— ์‹œ์Šคํ…œ์˜ ๋” ํฐ ๋ชฉ์ ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด์™€๋„ ์ ๊ทน ํ˜‘๋ ฅํ•œ๋‹ค. - -\ -์ฆ‰, ์‚ฌ๋žŒ๋“ค์ด **๊ณตํ†ต์˜ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ**๊ณผ ๊ฐ™์ด ๊ฐ์ฒด๋“ค์˜ ๊ฒฝ์šฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์‹ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. - -> ์‹œ์Šคํ…œ = ์—ญํ•  + ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ = ๊ฐ์ฒด ๊ฐ„์˜ ์—ฐ์‡„์ ์ธ ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ํ๋ฆ„์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ˜‘๋ ฅ - -๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋Š” ์ ์ ˆํ•œ ๊ฐ์ฒด์—๊ฒŒ ์ ์ ˆํ•œ ์ฑ…์ž„์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์ฑ…์ž„์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค. ์–ผ๋งˆ๋‚˜ ์ ์ ˆํ•œ ์ฑ…์ž„์„ ์„ ํƒํ•˜๋Š๋ƒ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„๋ฆ„๋‹ค์›€์„ ๊ฒฐ์ • - -> ์—ญํ•  = ๊ด€๋ จ์„ฑ ๋†’์€ ์ฑ…์ž„์˜ ์ง‘ํ•ฉ - -๊ฐ์ฒด์˜ ์—ญํ• ์˜ ํŠน์ง• ๋˜ํ•œ ์‚ฌ๋žŒ์˜ ์—ญํ• ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. - -* ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. -* ์—ญํ• ์€ ๋Œ€์ฒด ๊ฐ€๋Šฅ์„ฑ์„ ์˜๋ฏธ -* ๊ฐ ๊ฐ์ฒด๋Š” ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์œจ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. -* ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. - -### 3. ํ˜‘๋ ฅ ์†์— ์‚ฌ๋Š” ๊ฐ์ฒด - -์œค๊ณฝ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์ด์ง€๋งŒ ์‹ค์ œ๋กœ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ์ฃผ์ฒด๋Š” ๊ฐ์ฒด์ด๋‹ค.\ -๊ฒฐ๊ตญ ์‚ฌ๋žŒ์ด ์—†์œผ๋ฉด ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์ด ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†๋“ฏ์ด ๊ฐ์ฒด์ง€ํ–ฅ ์„ธ๊ณ„์—์„œ๋„ ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.\ -๊ฐ์ฒด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค. ์•„์ฃผ ์ž‘์€ ๊ธฐ๋Šฅ ์กฐ์ฐจ ๊ฐ์ฒด ํ˜ผ์ž๋Š” ๋ฒ„๊ฑฐ์šฐ๊ธฐ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€์˜ ๋ ต๋ ฅ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ , ๊ฒฐ๊ตญ ํ˜‘๋ ฅ์ด ์–ผ๋งˆ๋‚˜ ์กฐํ™”๋ฅผ ์ด๋ฃจ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ์ฒด์ด๋‹ค.\ -๊ฒฐ๊ตญ ํ˜‘๋ ฅ์˜ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ์ฒด์˜ ํ’ˆ์งˆ์ด๋‹ค.\ -ํ˜‘๋ ฅ ๊ณต๋™์ฒด์˜ ์ผ์›์œผ๋กœ ๊ฐ์ฒด๋Š” 2๊ฐ€์ง€ ๋•๋ชฉ์„ ๊ฐ–์ถ”๊ณ , ๊ท ํ˜•์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. - -1. ๊ฐ์ฒด๋Š” ์ถฉ๋ถ„ํžˆ ํ˜‘๋ ฅ์ ์ด์–ด์•ผ ํ•œ๋‹ค. - -* ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์š”์ฒญ์— ์ถฉ์‹คํžˆ ๊ท€ ๊ธฐ์šธ์ด๊ณ  ๋„์›€ ์š”์ฒญํ•  ์ •๋„์˜ ์—ด๋ฆฐ ๋งˆ์Œ -* ๋ชจ๋“  ๊ฒƒ์„ ์Šค์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€์ ์ธ ๋ณต์žก๋„์— ์˜ํ•ด ์ž๋ฉธ -* ํ˜‘๋ ฅ์  : ์ˆ˜๋™์ ์ธ ์กด์žฌ X, ์š”์ฒญ์— ์‘๋‹ตํ•  ๋ฟ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‘๋‹ตํ• ์ง€, ์‘ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ฒด ์Šค์Šค๋กœ ํŒ๋‹จํ•˜๊ณ  ๊ฒฐ์ •ํ•œ๋‹ค. - -1. ๊ฐ์ฒด๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ž์œจ์ ์ด์–ด์•ผ ํ•œ๋‹ค. - -* ์ž์œจ์  : ์ž๊ธฐ ์Šค์Šค๋กœ์˜ ์›์น™์— ๋”ฐ๋ผ ์–ด๋–ค ์ผ์„ ํ•˜๊ฑฐ๋‚˜ ์ž๊ธฐ ์Šค์Šค๋กœ ํ†ต์ œํ•˜์—ฌ ์ ˆ์ œํ•˜๋Š” ๊ฒƒ -* ์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ–‰๋™ํ•˜์ง€๋งŒ ์ตœ๋Œ€ํ•œ ์Šค์Šค๋กœ์˜ ํŒ๋‹จ์— ๋”ฐ๋ฅด๊ณ  ๊ฒฐ์ •ํ•˜๊ณ  ํ–‰๋™ํ•œ๋‹ค. - -\ -๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ๋ฌ˜๋ฏธ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ์กฐํ™”๋กญ๊ฒŒ ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ฐœ๋ฐœ์ ์ธ ๋™์‹œ์— ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ž์œจ์ ์ธ ๊ฐ์ฒด๋“ค์˜ ๊ณต๋™์ฒด ์„ค๊ณ„ํ•˜๋Š”๋ฐ ์žˆ๋‹ค. - -#### ์ƒํƒœ์™€ ํ–‰๋™์„ ํ•จ๊ป˜ ์ง€๋‹Œ ์ž์œจ์ ์ธ ๊ฐ์ฒด - -๊ฐ์ฒด = ์ƒํƒœ(state) + ํ–‰๋™(behavior)์„ ํ•จ๊ป˜ ์ง€๋‹Œ ์‹ค์ฒด์ด์ž ์ž์œจ์ ์ธ ์กด์žฌ\ -๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ–‰๋™์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ๊ทธ ํ–‰๋™์„ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒํƒœ๋„ ํ•จ๊ป˜ ์ง€๋‹ˆ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋งˆ์น˜, ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋Š” ๋ฐ”๋ฆฌ์Šคํƒ€๊ฐ€ ์ œ์กฐ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ\ -๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๊ณผ์ • ์†์—์„œ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜๊ณ  ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•˜๋Š” ์ž์œจ์ ์ธ ์กด์žฌ๋กœ ๋‚จ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์š”ํ•œ ํ–‰๋™๊ณผ ์ƒํƒœ๋ฅผ ํ•จ๊ป˜ ์ง€๋‹ˆ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.\ -๊ฐ์ฒด์˜ ์ž์œจ์„ฑ์€ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ๋‹ค. ๊ฐ์ฒด์˜ ์‚ฌ์ ์ธ ๋ถ€๋ถ„์„ ํ„ฐ์น˜ํ• ์ˆ˜ ์—†๊ฒŒ.. ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡(what)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ(how) ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค. โ‡’ ์บก์Šํ™”๋ž‘ ์—ฐ๊ด€\ -์ „ํ†ต์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• vs ๊ฐ์ฒด์ง€ํ–ฅ - -* ์ „ํ†ต์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• : ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ๊ตฌ๋ถ„ -* ๊ฐ์ฒด์ง€ํ–ฅ : ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ์ฒด๋ผ๋Š” ํ•˜๋‚˜์˜ ํ‹€ ์•ˆ์— ํ•จ๊ป˜ ๋ฌถ์–ด ๋†“์Œ์œผ๋กœ์จ ๊ฐ์ฒด์˜ ์ž์œจ์„ฑ์„ ๋ณด์žฅ - -#### ํ˜‘๋ ฅ๊ณผ ๋ฉ”์„ธ์ง€ - -์ธ๊ฐ„์€ ๊ธ€์ž, ๋ง ๋“ฑ ๋‹ค์–‘ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์˜์‚ฌ์†Œํ†ต์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์˜ ๋ฐ˜๋Œ€๋˜์–ด ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์„ธ๊ณ„์—์„œ๋Š” ์˜ค์ง ํ•œ ๊ฐ€์ง€ ์˜์‚ฌ์†Œํ†ต ์ˆ˜๋‹จ๋งŒ์ด ์กด์žฌํ•œ๋‹ค.\ -๋ฉ”์„ธ์ง€ - -* ์˜ค์ง ํ•œ ๊ฐ€์ง€์˜ ์˜์‚ฌ์†Œํ†ต -* ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์„ธ๊ณ„์—์„œ ํ˜‘๋ ฅ์€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ -* ์†ก์‹ ์ž(sender) : ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๊ฐ์ฒด -* ์ˆ˜์‹ ์ž(receiver) : ๋ฉ”์„ธ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฐ์ฒด - -#### ๋ฉ”์„œ๋“œ์™€ ์ž์œจ์„ฑ - -๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค.\ -๋ฉ”์„œ๋“œ(method) - -* ๊ฐ์ฒด๊ฐ€ ์ˆ˜์‹ ๋œ ๋ฉ”์„ธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• -* ํด๋ž˜์Šค ์•ˆ์— ํฌํ•จ๋œ ํ•จ์ˆ˜ ๋˜๋Š” ํ”„๋กœ์‹œ์ €๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ -* ๋”ฐ๋ผ์„œ ์–ด๋–ค ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฉ”์„ธ์ง€์— ๋Œ€์‘๋˜๋Š” ํŠน์ • ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰ - -\ -์ ˆ์ฐจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด vs ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - -* ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด : ๋ฉ”์„ธ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒ ๊ฐ€๋Šฅ -* ์ ˆ์ฐจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด : ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ๊ฒฐ์ • - -๋ฉ”์„ธ์ง€์™€ ๋ฉ”์„œ๋“œ์˜ ๋ถ„๋ฆฌ๋Š” ๊ฐ์ฒด์˜ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ž์œจ์„ฑ์„ ์ฆ์ง„\ -์ปคํ”ผ ์ œ์กฐ๋ฅผ ์š”์ฒญํ•œ ์บ์‹œ์–ด๋Š” ์ปคํ”ผ๊ฐ€ ์ œ์กฐ๋  ๊ฒƒ(what)์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€๋งŒ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ•(how)์— ๊ด€ํ•ด์„œ๋Š” ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ”๋ฆฌ์Šคํƒ€๋Š” ์ปคํ”ผ ์ œ์กฐ๋ผ๋Š” ๋ฉ”์‹œ์ง€์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ๋งŒ์˜ ์ž์œจ์ ์ธ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.\ -์บก์Šํ™”(encapsulation)์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ๋„ ๊นŠ์ด ๊ด€๋ จ - -### 4) ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ณธ์งˆ - -๊ทธ๋ž˜์„œ ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€? - -* ๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€ ์‹œ์Šคํ…œ์„ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ž์œจ์ ์ธ ๊ฐ์ฒด๋“ค์˜ ๊ณต๋™์ฒด๋กœ ๋ฐ”๋ผ๋ณด๊ณ  ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์„ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ• -* ์ž์œจ์ ์ธ ๊ฐ์ฒด๋ž€ ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ํ•จ๊ป˜ ์ง€๋‹ˆ๋ฉฐ ์Šค์Šค๋กœ ์ž๊ธฐ ์ž์‹ ์„ ์ฑ…์ž„์‹œํ‚ค๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธ -* ๊ฐ์ฒด๋Š” ์‹œ์Šคํ…œ์˜ ํ–‰์œ„๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅํ•œ๋‹ค. ๊ฐ ๊ฐ์ฒด๋Š” ํ˜‘๋ ฅ ๋‚ด์—์„œ ์ •ํ•ด์ง„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์—ญํ• ์€ ๊ด€๋ จ๋œ ์ฑ…์ž„์˜ ์ง‘ํ•ฉ์ด๋‹ค. -* ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ณ , ๋ฉ”์„ธ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์œจ์ ์œผ๋กœ ์„ ํƒํ•œ๋‹ค. - -#### ๊ฐ์ฒด๋ฅผ ์ง€ํ–ฅํ•˜๋ผ - -์—์Šคํ‚ค๋ชจ์˜ ๋ˆˆ์„ ์ง€์นญํ•˜๋Š” ๋‹จ์–ด๊ฐ€ 2๊ฐœ๋ฟ์ธ๋ฐ ๋งŽ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ถ€ํ’€๋ฆฌ๊ฒŒ ๋˜๊ฒŒ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„œ์  ์ถœํŒํ•˜๋Š” ๊ณผ์ •์—์„œ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์ด ๊ณผํ•˜๋‹ค ์‹ถ์„ ์ •๋„๋กœ ๊ฐ•์กฐ๋๋‹ค.\ -๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ค‘์‹ฌ์— ์žˆ์–ด์•ผ ํ•  ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์กฐ๊ธˆ์”ฉ ๋ฉ€์–ด์ ธ ๊ฐ”๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ด€์ ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ(construct)์ธ ๊ฒƒ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํ•ต์‹ฌ์„ ์ด๋ฃจ๋Š” ์ค‘์‹ฌ ๊ฐœ๋…์ด๋ผ๊ณ  ๋งํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค.\ -์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ™์€ ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.\ -ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ - -1. ์ฝ”๋“œ๋ฅผ ๋‹ด๋Š” ํด๋ž˜์Šค์˜ ๊ด€์ ์—์„œ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฐ์ฒด์˜ ๊ด€์ ์œผ๋กœ ์‚ฌ๊ณ ์˜ ์ค‘์‹ฌ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ - -* ์–ด๋–ค ๊ฐ์ฒด๋“ค์ด ์–ด๋–ค ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ€ -* ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋“ค์˜ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๋„๊ตฌ์ธ ๊ตฌํ˜„ ๋งค์ปค๋‹ˆ์ฆ˜์ผ ๋ฟ์ด๋‹ค. - -> ํ•ต์‹ฌ์€ ์ ์ ˆํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ•  ๊ฐ„์˜ ์œ ์—ฐํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ํด๋ž˜์Šค๋“ค์˜ ์ •์ ์ธ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฐ์ฒด๋“ค์˜ ๋™์ ์ธ ๊ด€๊ณ„์ด๋‹ค. - -\ -๊ฐ์ฒด์˜ ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์— ์ง‘์ค‘ํ•ด๋ผ! diff --git a/developLog/ci-cd/github-action/github-action.md b/developLog/ci-cd/github-action/github-action.md deleted file mode 100644 index d942233..0000000 --- a/developLog/ci-cd/github-action/github-action.md +++ /dev/null @@ -1,3 +0,0 @@ -# Github Action ๋งํฌ ๋ชจ์Œ - -{% embed url="https://docs.github.com/ko/actions" %} diff --git a/developLog/ci-cd/github-action/oauth-gitbook-github.io.md b/developLog/ci-cd/github-action/oauth-gitbook-github.io.md deleted file mode 100644 index f2b02b3..0000000 --- a/developLog/ci-cd/github-action/oauth-gitbook-github.io.md +++ /dev/null @@ -1,462 +0,0 @@ -# OAuth ์•ฑ์— ๋Œ€ํ•œ ๋ฒ”์œ„ ๋ฐ gitbook๊ณผ github.io๋ฅผ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์ž‘์—… - -## Github Action์ด๋ž€ - -`Github action` ์€ CI/CD๋ฅผ ์ž๋™ํ™”์‹œ์ผœ์ฃผ๋Š” `Github`์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋™ํ™” ๋„๊ตฌ์ด๋‹ค. - -ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ฒผ์„ ๊ฒฝ์šฐ,\ -์ด๋ฅผ merge ํ•  ๋•Œ๋งˆ๋‹ค ๋นŒ๋“œ-ํ…Œ์ŠคํŠธ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ฐฐํฌ๊นŒ์ง€ ๊ฑฐ์น˜๋Š” ๊ณผ์ •์„ `Github action`์€ ์ด ์ค‘์š”ํ•˜์ง€๋งŒ ๊ท€์ฐฎ์€ ๊ณผ์ •๋“ค์„ ์ž๋™ํ™” ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋‹ค! - -> ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์ด ์—ด๋ฆฌ๊ฑฐ๋‚˜ ์ด์Šˆ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ โ€˜์ด๋ฒคํŠธโ€™๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋„๋ก GitHub Actions โ€˜์›Œํฌํ”Œ๋กœโ€™๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. - -๊ฐ ์ž‘์—…์€ ์ž์ฒด ๊ฐ€์ƒ ๋จธ์‹  โ€˜์‹คํ–‰๊ธฐโ€™ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ •์˜ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ **์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™•์žฅ์ธ โ€˜์ž‘์—…โ€™์„ ์‹คํ–‰ํ•˜๋Š” โ€˜๋‹จ๊ณ„โ€™๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จ**ํ•œ๋‹ค. - -\+ ๊ฐ ์›Œํฌ ํ”Œ๋กœ์šฐ๋Š” `.yml` ํ˜น์€ `.yaml` ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์— ์ž‘์„ฑ๋œ๋‹ค. - -\+ `.github/workflows/` ์— action ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋ฉด Github์ด ์ž๋™์œผ๋กœ ์ธ์‹ํ•œ๋‹ค. - -\+ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—i github action์„ ๋ˆ„๋ฅด๋ฉด ์•Œ์•„์„œ workflows ํด๋”๊ฐ€ ์ƒ์„ฑ ๋จ - -### ์›Œํฌํ”Œ๋กœ๋ž€? - -**์›Œํฌํ”Œ๋กœ**๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ž๋™ํ™”๋œ ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์›Œํฌํ”Œ๋กœ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ฒดํฌ ์ธ๋œ YAML ํŒŒ์ผ์—์„œ ์ •์˜๋˜๋ฉฐ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฒคํŠธ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋  ๋•Œ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ๋˜๋Š” ์ •์˜๋œ ์ผ์ •์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ๋  ์ˆ˜ ์žˆ๋‹ค. - -์›Œํฌํ”Œ๋กœ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ `.github/workflows` ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ •์˜ - -## ์ด๊ฑธ ํ•˜๋Š” ๋ฐฐ๊ฒฝ - -> ์ด์œ .. Gitbook์€ ํ•ธ๋“œํฐ์œผ๋กœ ๊นจ์ง... ๊ทธ๋ฆฌ๊ณ  ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ ๊ธฐ๋Šฅ์ด ์—†์–ด์„œ ์†Œํ†ต์ด ๋ถˆ๊ฐ€ํ•จ์†” ใ… ใ… ใ…  ์†”์งํžˆ blog๋ผ๊ธฐ ๋ณด๋‹ค๋Š” notion์— ์ž˜๋œ ๋ฒ„์ „? ์นดํ…Œ๊ณ ๋ฆฌ ์ž˜ ๋œ ๋ฒ„์ „ ๋Š๋‚Œ์ด๋ผ์„œ github.io ๋ธ”๋กœ๊ทธ์— ๋„ฃ์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๊ฑฐ... ํ•˜๋‚˜ ํ•˜๋‚˜ ๊ธ€ ๋„ฃ์–ด์„œ ๋„ฃ๊ธฐ ๊ท€์ฐฎ์•„.. - -โœ… git book์˜ ์žฅ๋‹จ์  - -1. ์žฅ์  - -* gitbook์€ github repo์— ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ commit์ด ๋จ, ์ž”๋””์‹ฌ๊ธฐ ๊ฐ€๋Šฅ -* url ์ปค์Šคํ…€ ๊ฐ€๋Šฅ -* notion์ด๋ž‘ ๋‹ฌ๋ฆฌ.. ์นดํ…Œ๊ณ ๋ฆฌํ™” ๋ฐ workspace ์•ˆ์—์„œ ์ˆจ๊ธด ๊ธ€์ด๋‚˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ง€์ •ํ•˜๋ฉด ์™ธ๋ถ€์—์„œ๋Š” ์•ˆ๋ณด์—ฌ์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์ข‹์Œ - -2. ๋‹จ์  - -* ๋ฌธ์„œ ํ™ˆํŽ˜์ด์ง€๋ผ์„œ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ x -* ๋ฐฉ๋ฌธ ์ˆ˜ ํ™•์ธ์„ ์œ„ํ•ด์„œ๋Š” pro๋กœ ๊ฐ€์•ผํ•จ -* ํ•ธ๋“œํฐ์—์„œ ๊นจ์ง... ๋ฐ˜์‘ํ˜•์ด ์•„๋‹Œ์ง€ ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ๋„ ์•ˆ๋ณด์—ฌ... -* h3๋Š” ๋ชฉ์ฐจ๋กœ ์ณ์ฃผ์ง€๋„ ์•Š์Œ - -> ๊ฒฐ๋ก  ์ž๋™ํ™”ํ•ด์„œ github.io ๋ธ”๋กœ๊ทธ๋กœ ์—ฐ๋™ํ•˜๊ธฐ ์œ„![](<../../.gitbook/assets/image (33).png>) - -## Github Action ์„ค์ • ์‹œ, Access Token์˜ ์•ก์„ธ์Šค ์ œํ•œ ๋ฒ”์œ„ - -### Github PAT ๋ฐœ๊ธ‰ - -> ๋‚˜์ž„์„ ์ฆ๋ช…ํ•˜์—ฌ ๊ฐœ์ธ ๋ ˆํฌ๋กœ ํ‘ธ์‰ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง„ **๊ฐœ์ธ ํ† ํฐ (PAT, Personal Access Token)**์„ ๋ฐœ๊ธ‰ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. - -**<< Github PAT ๋ฐœ๊ธ‰ >>** - -* Github์—์„œ ๋กœ๊ทธ์ธ ํ›„ ์šฐ์ธก ์ƒ๋‹จ์˜ ํ”„๋กœํ•„ ์•„์ด์ฝ˜ ํด๋ฆญ -* `โš™๏ธ Settings` ํด๋ฆญ -* ์ขŒ์ธก ๋ฉ”๋‰ด ์ตœํ•˜๋‹จ์— `<> Developer Settings` ํด๋ฆญ -* `Personal access tokens` ํŽผ์ณ์„œ `Tokens (classic)` ํด๋ฆญ -* `Generate new token (classic)` ํด๋ฆญ - -โœ… ํ† ํฐ ์ƒ์„ฑ์‹œ ๊ณ ๋ คํ•  ๊ฐ ํ•ญ๋ชฉ - -* `Note`๋Š” ๋ณธ์ธ์ด ํ† ํฐ์— ๋ถ€์—ฌํ•  ์ด๋ฆ„, -* `Expiration`์€ ํ† ํฐ ๋งŒ๋ฃŒ ๊ธฐํ•œ, -* `Select scopes`๋Š” ํ•ด๋‹น ํ† ํฐ์— ์ค„ ๊ถŒํ•œ - -### ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„ - -> ์ž์ฃผ ์“ฐ์ด๋Š” ๊ฒƒ๋“ค๋งŒ ์•Œ์•„๋ณด์ž - -1. (no scope) - -* ๊ณต๊ฐœ ์ •๋ณด์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ •๋ณด, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด ๋ฐ gist ํฌํ•จ) - -2. repo โญ - -
- -* ์ฝ”๋“œ, ์ปค๋ฐ‹ ์ƒํƒœ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ดˆ๋Œ€, ํ˜‘๋ ฅ์ž, ๋ฐฐํฌ ์ƒํƒœ ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์›นํ›„ํฌ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ํฌํ•จํ•˜์—ฌ ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. -* **์ฐธ๊ณ **: ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค ์™ธ์—๋„ `repo` ๋ฒ”์œ„๋Š” ํ”„๋กœ์ ํŠธ, ์ดˆ๋Œ€, ํŒ€ ๋ฉค๋ฒ„ ์ž๊ฒฉ ๋ฐ ์›นํ›„ํฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์กฐ์ง ์†Œ์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. - -3. repo : status - -* ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹ ์ƒํƒœ์— ๋Œ€ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. -* ์ด ๋ฒ”์œ„๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ _์•Š๊ณ _ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค์— ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ปค๋ฐ‹ ์ƒํƒœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -4. repo\_deployment - -* ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ [๋ฐฐํฌ ์ƒํƒœ](https://docs.github.com/ko/rest/repos#deployments)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. -* ์ด ๋ฒ”์œ„๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ _์•Š๊ณ _ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค์— ๋ฐฐํฌ ์ƒํƒœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -5. public\_repo - -* ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œํ•œ ์—ฌ๊ธฐ์—๋Š” ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์กฐ์ง์˜ ์ฝ”๋“œ, ์ปค๋ฐ‹ ์ƒํƒœ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ”„๋กœ์ ํŠธ, ํ˜‘๋ ฅ์ž ๋ฐ ๋ฐฐํฌ ์ƒํƒœ์— ๋Œ€ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์•ก์„ธ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. -* ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ณ„ํ‘œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -6. repo:invite - -* ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํ˜‘์—…ํ•˜๋Š” ์ดˆ๋Œ€์˜ ์ˆ˜๋ฝ/๊ฑฐ์ ˆ ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ _์•Š๊ณ _ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค์— ์ดˆ๋Œ€์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -7. security\_events - -* [code scanning API](https://docs.github.com/ko/rest/code-scanning)์˜ ๋ณด์•ˆ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. -* ์ด ๋ฒ”์œ„๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ _์•Š๊ณ _ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค์— ๋ณด์•ˆ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -8. workflow - -* GitHub Actions ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. -* ๊ฒฝ๋กœ์™€ ๋‚ด์šฉ์ด ๋ชจ๋‘ ๋™์ผํ•œ ํŒŒ์ผ์ด ๋™์ผํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋‹ค๋ฅธ ๋ถ„๊ธฐ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฒ”์œ„ ์—†์ด ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์€ ๋‹ค๋ฅธ ๋ฒ”์œ„ ์ง‘ํ•ฉ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” `GITHUB_TOKEN`์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -* ์ž์„ธํ•œ ๋‚ด์šฉ์€ "[์ž๋™ ํ† ํฐ ์ธ์ฆ](https://docs.github.com/ko/actions/security-guides/automatic-token-authentication#permissions-for-the-github\_token)"์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”. - -## repo๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ ๋ฐœ๊ธ‰ - -### **1. << Github PAT ๋ฐœ๊ธ‰ >>** - -> ์ด ๊ฒƒ์„ Gitgook์ด Github.io๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ํ† ๊ทผ - -
- -* Github์—์„œ ๋กœ๊ทธ์ธ ํ›„ ์šฐ์ธก ์ƒ๋‹จ์˜ ํ”„๋กœํ•„ ์•„์ด์ฝ˜ ํด๋ฆญ -* `โš™๏ธ Settings` ํด๋ฆญ -* ์ขŒ์ธก ๋ฉ”๋‰ด ์ตœํ•˜๋‹จ์— `<> Developer Settings` ํด๋ฆญ -* `Personal access tokens` ํŽผ์ณ์„œ `Tokens (classic)` ํด๋ฆญ -* `Generate new token (classic)` ํด๋ฆญ -* Note์™€ Expiration์€ ์•Œ์•„์„œ ์ž‘์„ฑํ•˜๊ณ , -* `Select scopes` ์ค‘์— `repo`์™€ `workflow` ์„ ํƒ โญ๏ธ์ค‘์š”โญ๏ธ -* `Generate Token` - -### ๐Ÿค” write:package๋Š” ์•ˆํ•„์š”ํ• ๊นŒ?? - -`write:packages` ๊ถŒํ•œ์€ GitHub์˜ ํŒจํ‚ค์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(GitHub Packages)์— ํŒจํ‚ค์ง€๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์˜ GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ GitHub Packages์— ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, `write:packages` ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -* **`write:packages` ๊ถŒํ•œ**: ์ด ๊ถŒํ•œ์€ **GitHub Packages**์™€ ๊ด€๋ จ๋œ ์ž‘์—…์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Docker ์ด๋ฏธ์ง€, npm ํŒจํ‚ค์ง€, Maven ์•„ํ‹ฐํŒฉํŠธ ๋“ฑ์„ GitHub Packages์— ํ‘ธ์‹œํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. -* **์‚ฌ์šฉ ์‚ฌ๋ก€**: ๋งŒ์•ฝ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ„์— ์ปค๋ฐ‹์„ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ , ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์ด ์—†๋‹ค๋ฉด, `write:packages` ๊ถŒํ•œ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - -1. ์˜ˆ์‹œ ์ƒํ™ฉ - -* **ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ**: - * ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋งŒ ํ•  ๋•Œ. - * GitHub Packages์™€ ๊ด€๋ จ์ด ์—†๋Š” ์ž‘์—…์„ ํ•  ๋•Œ. -* **ํ•„์š”ํ•œ ๊ฒฝ์šฐ**: - * GitHub Packages์— ํŒจํ‚ค์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ. - * GitHub Actions์—์„œ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์ด๋ฅผ GitHub Packages์— ํ‘ธ์‹œํ•  ๋•Œ. - -2. ๊ถŒํ•œ ์„ค์ •: - -* ๋งŒ์•ฝ ํŒจํ‚ค์ง€ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, `repo`, `workflow`, `public_repo` ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ถŒํ•œ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. - -### 2. ํ† ํฐ ์„ค์ • - -> gitbook repo์— push ๋˜๊ฑฐ๋‚˜, ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค github.io์— ๊ธ€์„ ์—ฐ๊ฒฐํ•ด์ค„ ๊ฑฐ์ž„ - -
- -### 3. Gitbook repo, Github.io repo์— PAT ๋“ฑ๋ก โญ - -`Github action` ํŒŒ์ผ์— ๊ฐœ์ธ ๋ ˆํฌ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ `push`ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด\ -์œ„์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ ๊ฐœ์ธ ํ† ํฐ์„ ํ•จ๊ป˜ ๋ณด๋‚ด ๋‚ด ๋ ˆํฌ์— `push`ํ•  ๊ถŒํ•œ์„ ๋ฐ›์€ ์‚ฌ๋žŒ์ž„์„ ์ฆ๋ช… ํ•˜๊ธฐ ์œ„ํ•จ - -
- -
- -* GITBOOK , Github.io๋ ˆํฌ์˜ `โš™๏ธ Settings` ํด๋ฆญ -* `โŠž Secrets and variables`๋ฅผ ํŽผ์ณ `Actions` ํด๋ฆญ -* `New repository secret` ํด๋ฆญ -* `Name`์—๋Š” `.yml` ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ด๋ฆ„, `Value`์—๋Š” ์•„๊นŒ ๋ฐœ๊ธ‰๋ฐ›์€ PAT ์ž‘์„ฑ -* `Add Secret` ํด๋ฆญ - -## workflow ์ž‘์„ฑํ•˜๊ธฐ - -์›Œํฌํ”Œ๋กœ์šฐ์— ์ž‘์—…ํ•ด์•ผ ํ•  ๊ฒƒ์€ ํฐ ํ‹€์€ - -> gitbook์— ์žˆ๋Š” md ํŒŒ์ผ์„ github.io์˜ `_posts`์— ๋„ฃ์–ด์•ผ ํ•จ - -
- -### gitbook ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ - -1. gitbook์€ ํ•œ๊ธ€์„ ์ €์žฅํ•˜์ง€ ๋ชปํ•˜๋”๋ผ? -2. ๊ทธ๋ž˜์„œ ํ•œ๊ธ€๋กœ ๋œ ํƒ€์ดํ‹€์˜ ๊ฒฝ์šฐ, github repo์— ์ €์žฅ ์‹œ, undefinded๋กœ ์ €์žฅ๋จ - -
- -3. md ํŒŒ์ผ ์ฝ”๋“œ ์•ˆ์—๋Š” ์ž˜ ๋“ค์–ด๊ฐ€์ง - -* gitbook์ด ## ๊นŒ์ง€๋งŒ ๋ชฉ์ฐจ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ ๊ทธ ์ด์œ ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ gitbook์—์„œ ##๋กœ ๋ชฉ์ฐจ๋ฅผ ํ•˜๋ฉด ### ๋กœ #๋กœ ํ•˜๋ฉด ##๋กœ # ์„ ํ•˜๋‚˜์”ฉ ๋” ๋ถ™์—ฌ์ง€๋Š” ๊ผด์ž„ -* ์ฆ‰, ์ œ๋ชฉ์ด # ํ•œ๊ฒŒ h1์ž„ => ์ด๊ฑธ github io์— ๋„˜์–ด๊ฐ€๊ธฐ ์ „ workflow์—์„œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•จ push๊ฐ€ ๋“ค์–ด์˜ฌ ๋•Œ ๋ณ€๊ฒฝ์„ ํ•˜๋˜ ์•„๋‹ˆ๋ฉด ์ผ์ •์‹œ๊ฐ„๋งˆ๋‹ค ๋ณ€๊ฒฝ์„ ํ•˜๋˜์ง€ - -### ์ฆ‰, workflow์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด - -1. gitbook ์ปค๋ฐ‹ ์‹œ, ํŒŒ์ผ ์ด๋ฆ„์„ ๋‹ค ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ... mdํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” h1์œผ๋กœ -2. gitbook์˜ github.io๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ฌ ๊ฑด๋ฐ, md ํŒŒ์ผ๋“ค์„ ์ฐพ์•„์•ผ ํ•จ(main ๋ธŒ๋žœ์น˜์— `checkout`) -3. developLog > ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘ ์•„๋ž˜ ๋‘๊ฐœ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ „๋ถ€ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ ์ดํ›„๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ๋งŒ ๊ฐ€์ ธ์˜ฌ ๊ฑฐ์ž„ - -
- -4. **ํด๋”**๋ฅผ `์นดํ…Œ๊ณ ๋ฆฌ`๋กœ ๋ถ„๋ฅ˜ ํ•  ๊ฑฐ์ž„ -5. mdํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์ค˜์•ผ ํ•จ ๋‘˜์ด ์‚ด์ง ๋‹ฌ๋ผ์„œ gitbook์—์„œ ๋ณด๋‚ผ ๋•Œ ์นดํ…Œ๊ณ ๋ฆฌ, ๋ฐœ๊ธ‰๋‚ ์งœ, ํƒ€์ดํ‹€ ๋“ฑ์„ mdํŒŒ์ผ ์•ˆ์— ๋„ฃ์–ด์ค˜์•ผ ํ•จ - -โœ… gitbook์˜ ๊ฒฝ์šฐ, github.io์™€ ์—ฐ๋™์ด ์•ˆ๋˜๊ธฐ์— md ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” ์ƒ๋‹จ์— ์žˆ๋Š” --- --- ์˜์—ญ์ธ ๋ถ€๋ถ„์„ ์‚ญ์ œ ์‹œ์ผœ์ค˜์•ผํ•จ - -โœ… ๊ทธ๋ฆฌ๊ณ  github.io์— ๋งž์ถฐ ์•ˆ์— ๋‚ด์šฉ ์ˆ˜์ • ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ํ•ด์ค˜์•ผ ํ•จ - -* title : ํŒŒ์ผ ์ œ๋ชฉ์œผ๋กœ ๊ฐ€์ ธ์˜ด -* description : ์€ gitbook์ด๋ž‘ ๋˜‘๊ฐ™์ด ์—†์œผ๋ฉด ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒŒ -* author : ๋ฌด์กฐ๊ฑด mellona -* date : commitํ•œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์œผ๋กœ -* pin : ๊ธฐ๋ณธ๊ฐ’ fasle -* mermaid : ๊ธฐ๋ณธ๊ฐ’ true -* image: gitbook cover๋กœ ํ•ด์„œ ๊ฐ€์ ธ์˜ด ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ .gitbook/assets/DALLยทE 2024-08-12 14.38.23 - A blog banner designed with a minimalist winter theme, featuring a snow-covered landscape with a trail of footsteps leading through the snow. The desi.webp - -
- -โœ… ํƒ€์ดํ‹€๋„ ๊ทธ๊ฒƒ์— ๋งž๊ฒŒ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ ํƒ€์ดํ‹€ : ๋…„๋„-์›”-์ผ ํŒŒ์ผ์ œ๋ชฉ - -6. ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด, github.io \_posts์— `push` ํ•ด์ค€๋‹ค. - checkout ํ•„์š” - -### workspace ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ - -> ๐Ÿ“ ์ฐธ๊ณ  : [github action์˜ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌ๋ฌธ](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob\_idneeds) - -์•ž์— 1, 2์€ gitbook repo์— ํ‘ธ์‹œ๋  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด **Gitbook title rename.yml**์œผ๋กœ - -๋’ค์— 3, 4, 5, 6์€ github.io repo์— ๋„˜์–ด๊ฐˆ ๋•Œ ์ž‘์—…์œผ๋กœ **Convert and Deploy DevelopLog to Jekyll.ym**l๋กœ ์ž‘์—…ํ•ด์•ผ ๊ฒ ๋‹ค. - -
- -1. Gitbook title rename์„ dev ๋ธŒ๋žœ์น˜์— ๋จผ์ € ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด **Rename and Commit Markdown Files.yml**์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์•„๋ž˜์˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ - -``` -name: Rename and Commit Markdown Files - -on: - push: - branches: - - dev # dev ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ๋  ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ ํŠธ๋ฆฌ๊ฑฐ - workflow_dispatch: # ์ˆ˜๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ - -jobs: - process-markdown: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Rename Markdown files - run: | - for file in developLog/*.md; do - title=$(grep -m 1 '^# ' "$file" | sed 's/^# //') - if [ -n "$title" ]; then - new_filename="developLog/${title// /_}.md" - mv "$file" "$new_filename" - fi - done - - - name: Commit changes - run: | - git config --local user.email "your-email@example.com" - git config --local user.name "Your Name" - git add . - git commit -m "Rename Markdown files based on h1 titles" - git push origin dev # ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ dev ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ - -``` - -โœ… ํƒ€์ดํ‹€๋„ ๊ทธ๊ฒƒ์— ๋งž๊ฒŒ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ ํƒ€์ดํ‹€ : ๋…„๋„-์›”-์ผ ํŒŒ์ผ์ œ๋ชฉ ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด, github.io \_posts์— push ํ•ด์ค€๋‹ค. - checkout ํ•„์š” workspace ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ - -๐Ÿ“ ์ฐธ๊ณ  : github action์˜ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌ๋ฌธ ์•ž์— 1, 2์€ gitbook repo์— ํ‘ธ์‹œ๋  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Gitbook title rename.yml์œผ๋กœ ๋’ค์— 3, 4, 5, 6์€ github.io repo์— ๋„˜์–ด๊ฐˆ ๋•Œ ์ž‘์—…์œผ๋กœ Convert and Deploy DevelopLog to Jekyll.yml๋กœ ์ž‘์—…ํ•ด์•ผ ๊ฒ ๋‹ค. - -ํ•œ๊ธ€ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—….. gpt์˜ ๋„์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค... + ๋ฌธ์„œ Gitbook title rename์„ dev ๋ธŒ๋žœ์น˜์— ๋จผ์ € ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด Rename and Commit Markdown Files.yml์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์•„๋ž˜์˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ name: Rename and Commit Markdown Files - -on: push: branches: - dev # dev ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ๋  ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ ํŠธ๋ฆฌ๊ฑฐ workflow\_dispatch: # ์ˆ˜๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ - -jobs: process-markdown: runs-on: ubuntu-latest - -``` -steps: -- name: Checkout repository - uses: actions/checkout@v4 - -- name: Rename Markdown files - run: | - for file in developLog/*.md; do - title=$(grep -m 1 '^# ' "$file" | sed 's/^# //') - if [ -n "$title" ]; then - new_filename="developLog/${title// /_}.md" - mv "$file" "$new_filename" - fi - done - -- name: Commit changes - run: | - git config --local user.email "your-email@example.com" - git config --local user.name "Your Name" - git add . - git commit -m "Rename Markdown files based on h1 titles" - git push origin dev # ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ dev ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ -``` - -๐Ÿ”ฅ ๋ฌธ์ œ : push๊ฐ€ main ๋ธŒ๋žœ์น˜์— ๋˜๋ฉด์„œ, ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์•ˆ๋จ - -โœ… gitbook push ์ž์ฒด๊ฐ€ ๋ฌด์กฐ๊ฑด main์œผ๋กœ ๋ผ์„œ ๊ทธ๋ƒฅ ์ผ๋‹จ, main์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ํ•จ - -
- -๐Ÿ”ฅ ์ดํ›„์˜ ๋ฌธ์ œ๋Š” ํŒŒ์ผ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ h1์˜ ์ด๋ฆ„์œผ๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋“ค๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒ - -โœ… ํŒŒ์ผ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ด๋ฏธ ๋™์ผํ•œ ์ด๋ฆ„์ด๋ผ๋ฉด mv ๋ช…๋ น์„ ๊ฑด๋„ˆ๋›ฐ๋„๋ก ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. name: Rename and Commit Markdown Files - -on: push: branches: - main # main ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ๋  ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ ํŠธ๋ฆฌ๊ฑฐ workflow\_dispatch: # ์ˆ˜๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ - -jobs: process-markdown: runs-on: ubuntu-latest # ์ตœ์‹  Ubuntu ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ - -``` -steps: -- name: Checkout repository - uses: actions/checkout@v4 # ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฒดํฌ์•„์›ƒ - -- name: Rename Markdown files - run: | - for file in developLog/*.md; do - # ์ฒซ ๋ฒˆ์งธ H1 ์ œ๋ชฉ์„ ์ถ”์ถœํ•˜์—ฌ ์ œ๋ชฉ์œผ๋กœ ์‚ฌ์šฉ - title=$(grep -m 1 '^# ' "$file" | sed 's/^# //') - - if [ -n "$title" ]; then - # ์ƒˆ ํŒŒ์ผ๋ช…์„ ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ, ๊ณต๋ฐฑ์€ ๋ฐ‘์ค„(_)๋กœ ๋Œ€์ฒด - new_filename="developLog/${title// /_}.md" - - # ํŒŒ์ผ ์ด๋ฆ„์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋Š” mv ๋ช…๋ น์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค - if [ "$file" != "$new_filename" ]; then - mv "$file" "$new_filename" - fi - fi - done - -- name: Commit changes - run: | - # Git ์‚ฌ์šฉ์ž ์ •๋ณด ์„ค์ • - git config --local user.email "your-email@example.com" - git config --local user.name "Your Name" - # ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹ - git add . - git commit -m "Rename Markdown files based on h1 titles" - # ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ main ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ - git push origin main -``` - -ํ•˜์ง€๋งŒ, ์ด ๋˜ํ•œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๋ฐ... ๐Ÿ”ฅ ๋ฐ”๋€” ๊ฒƒ์ด ์—†๋‹ค๊ณ  ์ž๊พธ ๋œธ - -
- -โœ… add -A๋กœ ์ „์ฒด๋กœ ํ•ด์ฃผ๊ณ  ๊ทธ๋ฆฌ๊ณ  ํ† ํฐ์„ ์ด์šฉํ•ด์„œ github action ๋ด‡์ด ๋„ฃ๊ฒŒ ์ˆ˜์ • - -## ์ผ๋ถ€ ์ฝ”๋“œ - -``` - git add -A # ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ถ”๊ฐ€ - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - git diff --staged --quiet || git commit -m "Rename Markdown files based on h1 titles" - git push https://${{ secrets.GH_PAT }}@github.com/GoldenPearls/gitBook.git # ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ main ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ -``` - - ๐Ÿ”ฅ ์‹คํ–‰์€ ๋˜๋Š”๋ฐ ํŒŒ์ผ์ด ๋ฐ”๋€Œ์ง€ ์•Š์Œ.. - -
- -โœ… ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์ž‘์—… ์ˆ˜ํ–‰ - -* name: Set UTF-8 Encoding run: | export LC\_CTYPE="UTF-8" # UTF-8 ์ธ์ฝ”๋”ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ • - -๐Ÿ”ฅ mv ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ์„ ์ด๋™ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ์ƒˆ ํŒŒ์ผ ์ด๋ฆ„์— ํฌํ•จ๋œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•จ - -
- -โœ… ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด, ์ด๋™ํ•  ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. - -
- -![](https://velog.velcdn.com/images/prettylee620/post/037def8c-e24e-4b88-a445-c1721ac892d2/image.png) - -ํ•ด๊ฒฐ!!!!! ใ… ใ…œใ… ใ… ใ…  40๋ถ„์˜ ์‚ฝ์งˆ ๋์— ์ž˜๋ฐ”๋€Œ์—ˆ๋‹ค.. ํ‘ํ‘.. ์ค„ ์•Œ์•˜์œผ๋‚˜... ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์–ฝํžˆ๋Š” ํ˜„์ƒ์ด ๋‚˜์˜ด... - -``` -name: Rename and Commit Markdown Files - -on: - push: - branches: - - main # main ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ๋  ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ ํŠธ๋ฆฌ๊ฑฐ - workflow_dispatch: # ์ˆ˜๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ - -jobs: - process-markdown: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITBOOKKEY }} - fetch-depth: 0 - ref: main - - - name: Set UTF-8 Encoding - run: | - export LC_CTYPE="UTF-8" # UTF-8 ์ธ์ฝ”๋”ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ • - - - name: Rename and Update Markdown files - run: | - for file in $(find developLog -type f -name '*.md'); do - # ํŒŒ์ผ ๋‚ด์šฉ์˜ ์ฒซ ๋ฒˆ์งธ ์ œ๋ชฉ ์ค„์„ ์ถ”์ถœ - title=$(grep -m 1 '^#' "$file" | sed 's/^# //') - - if [ -n "$title" ]; then - # ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ํŒŒ์ผ๋ช… ์ƒ์„ฑ - dir=$(dirname "$file") - new_filename="$dir/$title.md" - - # ๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ - new_dir=$(dirname "$new_filename") - mkdir -p "$new_dir" - - # ํŒŒ์ผ ์ด๋ฆ„์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋„ ๊ฐ•์ œ๋กœ ์—…๋ฐ์ดํŠธ - if [ "$file" != "$new_filename" ]; then - echo "Renaming $file to $new_filename" - mv "$file" "$new_filename" - else - echo "Updating timestamp for $file" - touch "$file" # ํŒŒ์ผ์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์—…๋ฐ์ดํŠธ - fi - else - echo "No valid title found in $file, skipping." - fi - done - - - name: Commit changes - run: | - git add -A # ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ถ”๊ฐ€ - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - git diff --staged --quiet || git commit -m "Rename and update Markdown files based on h1 titles" - git push https://${{ secrets.GH_PAT }}@github.com/GoldenPearls/gitBook.git # ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ main ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ - -``` - -
- -## TMI - -GITHUB Action์ด ํŽธํ•˜๊ธฐ๋Š” ํ•œ๋‹ค ์ž˜ ๋ชฐ๋ผ์„œ... ํ•  ๋•Œ๋งˆ๋‹ค ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๋“ฏ ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ๋„ˆ๋ฌด ๋งŽ๊ธฐ๋„ ํ•˜๊ณ ... ํ•˜์ง€๋งŒ ์ž๋™ํ™” ์ตœ๊ณ  - - - -> ๐Ÿ“ ์ฐธ๊ณ  -> -> * [Github action์œผ๋กœ Sync Fork ์ž๋™ํ™”ํ•˜๊ธฐ - push ๋  ๋•Œ๋งˆ๋‹ค](https://velog.io/@charming-l/Github-action%EC%9C%BC%EB%A1%9C-push-%EB%90%A0-%EB%95%8C%EB%A7%88%EB%8B%A4-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EC%B5%9C%EC%8B%A0%ED%99%94%ED%95%98%EA%B8%B0to-forked-repo) -> * [GitAction์—์„œ ๋‹ค๋ฅธ ๋ ˆํฌ๋กœ ์ ‘๊ทผํ•˜๋ ค๋ฉด?](https://stackoverflow.com/questions/71068476/accessing-another-repository-with-github-cli-in-github-actions) -> * [GitHub Organization ํ”„๋กœ์ ํŠธ๋ฅผ vercel ๋ฌด๋ฃŒ๋กœ ์—ฐ๋™ํ•˜๊ธฐ (+git actions)](https://velog.io/@rmaomina/organization-vercel-hobby-deploy) - diff --git a/developLog/ci-cd/github/git.md b/developLog/ci-cd/github/git.md deleted file mode 100644 index cf22ab8..0000000 --- a/developLog/ci-cd/github/git.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: Git์—์„œ ์•Œ๊ฒŒ ๋œ ์ง€์‹์„ ํ•œ ๋ˆˆ์— -icon: git ---- - -# Git์—์„œ ์•Œ๊ฒŒ ๋œ ์ง€์‹ - -## 1. Git tree์— ๋Œ€ํ•ด์„œ - -> ์ถœ์ฒ˜ : [Github action์œผ๋กœ Sync Fork ์ž๋™ํ™”ํ•˜๊ธฐ - push ๋  ๋•Œ๋งˆ๋‹ค](https://velog.io/@charming-l/Github-action%EC%9C%BC%EB%A1%9C-push-%EB%90%A0-%EB%95%8C%EB%A7%88%EB%8B%A4-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EC%B5%9C%EC%8B%A0%ED%99%94%ED%95%98%EA%B8%B0to-forked-repo) - -์ฒ˜์Œ์—๋Š” _"๊ฐ™์€ ์ปค๋ฐ‹ํ•ด์‹œ๋กœ `push`ํ•œ๋‹ค"_, _"`Git tree`๋ฅผ ๊ฐ™๊ฒŒ ํ•œ๋‹ค"_ ๋Š” ํŒ€์›์˜ ๋ง์ด ์ž˜ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์•˜๊ณ , ๋•๋ถ„์— Git์˜ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋Š” ์ข‹์€ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค. - -Git์€ ๊ฐ ์ƒํƒœ๋“ค์„ ์Šค๋ƒ…์ƒท์„ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ (`commit`), ์ด๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ tree๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์ด๊ฒŒ history, ์ฆ‰ `Git tree`๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. Git์˜ ๊ฐ ์ปค๋ฐ‹๋“ค์€ ์ด ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ปค๋ฐ‹์€ ๋ถ€๋ชจ ์ปค๋ฐ‹์˜ ํฌ์ธํ„ฐ๋ฅผ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์œ„ ๋งํฌ์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ชจ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋˜ ์ปค๋ฐ‹์„ ๊ฐ•์ œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Orgin repo์™€ forked repo๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋ฐ‹ ํ•ด์‹œ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ ๊ฐœ์ธ ๋ ˆํฌ๋ฅผ remote url์— ๋“ฑ๋กํ•˜์—ฌ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ๊ฐ€์ ธ์™€ Origin repo์˜ ์ตœ๊ทผ ๋ณ€๊ฒฝ์‚ฌํ•ญ์˜ ์ปค๋ฐ‹์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐํ•˜๋ฏ€๋กœ ๋™์ผํ•œ `Git tree`๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค. - -๊ณผ์ •์ด ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ”๋˜ ์ฒซ ์‹œ๋„๋กœ๋Š” ๋ฌด์ž‘์ • ๋‘ ๋ ˆํฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ merge ํ•ด์„œ, ์–‘ ๋ ˆํฌ์— ๋‹ค์‹œ pushํ•˜๋ฉด ๋˜๋‚˜? ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒดํฌ์•„์›ƒ์‹œ์— ํ† ํฐ์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋‹ˆ merge ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค...\ -๋•๋ถ„์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ ˆํฌ๋ผ๋ฆฌ ๋ณ‘ํ•ฉ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `--allow-unrelated-histories` ๋ผ๋Š” `git merge` ์˜ต์…˜๋„ ์•Œ๊ฒŒ ๋˜์—ˆ์ง€๋งŒ ์ดํ›„์—” Merge conflict๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์—๋Ÿฌ๋กœ ์ด์–ด์กŒ๋‹ค. ํŒ€ ๋ ˆํฌ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผํ•˜๋‹ˆ๊นŒ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ ˆํฌ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” `-Xours`๋ผ๋Š” ์˜ต์…˜๊นŒ์ง€ ํ•˜๋‚˜ ๋” ๋ฐฐ์›Œ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.. - - - -### ์ •๋ฆฌํ•˜์ž๋ฉด, - -1. **Git์˜ ๊ตฌ์กฐ ์ดํ•ด**: - * Git์€ ์ƒํƒœ๋ฅผ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ €์žฅํ•˜๊ณ , ์ด ์Šค๋ƒ…์ƒท๋“ค์€ ๊ณ ์œ ์˜ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. - * ๊ฐ ์ปค๋ฐ‹์€ ๋ถ€๋ชจ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ํฌ์ธํ„ฐ๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด Git ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. - * Git ํŠธ๋ฆฌ๋Š” ์ด ์ปค๋ฐ‹๋“ค์˜ ์—ฐ๊ฒฐ๋œ ํžˆ์Šคํ† ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. -2. **Git ํŠธ๋ฆฌ์™€ ์ปค๋ฐ‹ ํ•ด์‹œ**: - * Git์—์„œ ๊ฐ ์ปค๋ฐ‹์€ ๊ณ ์œ ํ•œ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ์ด ํ•ด์‹œ๋Š” ์ปค๋ฐ‹์˜ ๋‚ด์šฉ๊ณผ ๋ถ€๋ชจ ์ปค๋ฐ‹์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋‚ด์šฉ์˜ ์ปค๋ฐ‹์ด๋ผ๋„ ๋ถ€๋ชจ ์ปค๋ฐ‹์ด ๋‹ค๋ฅด๋ฉด ํ•ด์‹œ ๊ฐ’์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ €์žฅ์†Œ์—์„œ ๋™์ผํ•œ ๋‚ด์šฉ์„ ์ปค๋ฐ‹ํ•˜๋”๋ผ๋„ ๋ถ€๋ชจ ์ปค๋ฐ‹์ด ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. - * ๋‘ ์ €์žฅ์†Œ๊ฐ€ ๋™์ผํ•œ Git ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ ค๋ฉด, ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ๋™๊ธฐํ™”ํ•˜์—ฌ ๋™์ผํ•œ ์ปค๋ฐ‹ ํ•ด์‹œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. -3. **`--allow-unrelated-histories` ์˜ต์…˜**: - * ์ด ์˜ต์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ Git ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ๋‘ ์ €์žฅ์†Œ๋ฅผ ๋ณ‘ํ•ฉํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Git์€ ์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณ‘ํ•ฉํ•  ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋ณ‘ํ•ฉ์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ œํ•œ์„ ๋ฌด์‹œํ•˜๊ณ  ๋ณ‘ํ•ฉ์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -4. **Merge ์ถฉ๋Œ ํ•ด๊ฒฐ**: - * ๋ณ‘ํ•ฉ ์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ๋‘ ์ €์žฅ์†Œ๊ฐ€ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ `-Xours` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํŒŒ์ผ์— ๋Œ€ํ•ด ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ๋œ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์šฐ์„ ์‹œํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - * ์ด ์˜ต์…˜์€ ์ถฉ๋Œ ํ•ด๊ฒฐ์˜ ํ•œ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ํ•ญ์ƒ ๋ชจ๋“  ์ƒํ™ฉ์— ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. diff --git a/developLog/ci-cd/github/github-1.md b/developLog/ci-cd/github/github-1.md deleted file mode 100644 index 58875ce..0000000 --- a/developLog/ci-cd/github/github-1.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -icon: person-chalkboard ---- - -# ํŒ€ํ”„๋กœ์ ํŠธ๋•Œ ์•Œ์•„๋‚ธ github ์ง€์‹ - -![](https://velog.velcdn.com/images/prettylee620/post/310494d3-2d3b-4810-bec1-853d7a06ef40/image.png) - -## TMI - -> ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ํŒ€ ๊ณตํ†ต ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๋ฉด์„œ ์•Œ๊ฒŒ ๋œ github ์‚ฌ์šฉ๋ฒ• ๋“ฑ์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค ๊ทธ ์ดํ›„ ๊ณ„์† ์ถ”๊ฐ€์˜ˆ์ •์ด๊ณ  ํŒ€ ํ”„๋กœ์ ํŠธ ๋๋‚˜๋ฉด 1๋ถ€ํ„ฐ 10๊นŒ์ง€ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค - -## 1. ๋ฆฌ์•กํŠธ๋ฅผ github์— ์˜ฌ๋ฆด ๋•Œ - -1. ๋ฆฌ์•กํŠธ์™€ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ๊ฐ™์ด ์—ฐ๊ฒฐํ•œ ๊ฒƒ์„ ์˜ฌ๋ฆฌ๋Š”๋ฐ **๋ฆฌ์•กํŠธ ํŒŒ์ผ๋งŒ ์ œ์™ธ**๊ฐ€ ๋๋‹ค. - -* ๊ทธ๋ž˜์„œ ์ผ๋ถ€ ํŒŒ์ผ๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ํ•˜๋ ค๋‹ค๊ฐ€โ€ฆ ๋ฌด์ˆ˜ํ•œ ๊ฐœํ–‰ ๋ฌธ์ž ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋จ - -2. `node/module`์€ ์˜ฌ๋ฆฌ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ œ์™ธ ์‹œ์ผœ์ค˜์•ผ ํ•จ - -* ์ œ 1์•ˆ : ๊ด€๋ จ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋‚ด `.gitgnore`์— ๋“ค์–ด๊ฐ€์„œ ์ˆ˜์ • - -> ์•„๋ฌด ์œ„์น˜์—๋‚˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ ํ›„ ์ €์žฅ - -![](https://velog.velcdn.com/images/prettylee620/post/fd2ae5cf-aa90-4268-93f3-7b2f9d9c8b83/image.png) - -* ์ œ 2์•ˆ : ๋ช…๋ น์–ด๋กœ ์ œ๊ฑฐ - -![](https://velog.velcdn.com/images/prettylee620/post/5ee75d73-64a8-4bb9-ab8f-26f3cbb011a5/image.png) - -3. ๊ทธ ํ›„ ์ผ๋ถ€ ํŒŒ์ผ๋งŒ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด add - -![](https://velog.velcdn.com/images/prettylee620/post/83b294c0-4114-418f-ae3c-a307e21c59c3/image.png) - -4. warning์ด์ง€๋งŒ ํฐ ๋ฌธ์ œ ์—†๋‹ค ํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/5bc2494c-0bd7-4655-b71b-5a16fa9ea0ee/image.png) - -5. ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์ด ๋ช…๋ น์–ด ์“ฐ๋ฉด ๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/2e091bec-a2dc-414a-a5b3-2f61effb0808/image.png) - -6. ๊ทธ ํ›„ commit ํ•˜๊ณ  push - -![](https://velog.velcdn.com/images/prettylee620/post/a32e8dbc-8876-4869-ba12-16e668f3fbc5/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/c1e454c4-def1-4890-8aaf-85f81c58fb25/image.png) - -7. ๋ฌธ์ œ ์—†์ด ์ถ”๊ฐ€๋จ - -![](https://velog.velcdn.com/images/prettylee620/post/d2b001dd-840c-4b13-a2c6-52ca505dee0d/image.png) - -8. node-moudules์˜ ๊ฒฝ์šฐ **`npm install` ํŒจํ‚ค์ง€ ์„ค์น˜** - -* `node_modules/`๋Š” Node.js ํ”„๋กœ์ ํŠธ์—์„œ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์ด ์„ค์น˜๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ -* ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Git์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์€ **`package.json`** ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋‚˜ ์„œ๋ฒ„์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•œ ํ›„ **`npm install`** ๋˜๋Š” **`yarn install`** ๋ช…๋ น์„ ํ†ตํ•ด ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ ๊ฐ€๋Šฅ - -## 2. Git add์‹œ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€ - -**`git add`** ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ๋‚˜์˜ค๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋Š” ์—ฌ๋Ÿฌ ์›์ธ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค: - -1. **๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ**: Git์€ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ(์ผ๋ฐ˜์ ์œผ๋กœ 100MB ์ด์ƒ)์— ๋Œ€ํ•ด์„œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Git LFS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. -2. **๊ฐœํ–‰ ๋ฌธ์ž**: Windows์™€ Unix ๊ณ„์—ด ์‹œ์Šคํ…œ(๋ฆฌ๋ˆ…์Šค, ๋งฅ)์€ ํŒŒ์ผ์˜ ๋์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ฒฝ๊ณ ํ•˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -3. **.gitignore**: **`.gitignore`** ํŒŒ์ผ์— ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -### ๐Ÿ’ซ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• - -1. **๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆจ๊น€**: ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ณ , ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆจ๊ธฐ๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด **`-no-warn`** ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•˜์ง€๋งŒ, ์ด๋Š” ๋ชจ๋“  ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆจ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.) - - ```css - cssCopy code - git add --no-warn src/main/reactfront/ - - ``` -2. **์›์ธ ํŒŒ์•… ๋ฐ ํ•ด๊ฒฐ**: ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ง์ ‘ ์ฝ๊ณ  ์›์ธ์„ ํŒŒ์•…ํ•œ ๋’ค์— ๊ทธ ์›์ธ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ \*\*`.gitignore`\*\*์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, Git LFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -3. **๊ฐœํ–‰ ๋ฌธ์ž ์ฒ˜๋ฆฌ**: ๊ฐœํ–‰ ๋ฌธ์ž ๊ด€๋ จ ๊ฒฝ๊ณ ์˜ ๊ฒฝ์šฐ, Git ์„ค์ •์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: - - ```arduino - arduinoCopy code - git config --global core.autocrlf true - - ``` - -## 3. ๊นƒํ—ˆ๋ธŒ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ํŠน์ • ํŒŒ์ผ์ด๋‚˜ ํด๋”๋งŒ ์ œ์™ธ ์›์ธ - -### **`.gitignore` ํŒŒ์ผ** - -* **`.gitignore`** ํŒŒ์ผ์€ Git์—์„œ ์ถ”์ ํ•˜์ง€ ์•Š์•„์•ผ ํ•  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ • -* ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” **`.gitignore`** ํŒŒ์ผ์—๋Š” **`node_modules/`** ๋“ฑ์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์ด ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ๋“ค์€ Git์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋˜๋Š” ๋ฆฌ์•กํŠธ ํด๋” ๋‚ด์— **`.gitignore`** ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์šฉ์„ ์ ๊ฒ€ํ•  ๊ฒƒ - -### **Git ์ดˆ๊ธฐํ™” ์œ„์น˜** - -* Git ์ €์žฅ์†Œ๋Š” `git init`์„ ์‹คํ–‰ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ๋“ค์„ ์ถ”์ ํ•œ๋‹ค. -* ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋ณ„๋„๋กœ `git init`์„ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋งŒ ๋ณ„๋„์˜ Git ์ €์žฅ์†Œ๋กœ ์ธ์‹๋˜์–ด ์ƒ์œ„ ํด๋”์˜ Git์—์„œ๋Š” ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ๋‹ค. -* ์ด ๊ฒฝ์šฐ, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์— **`.git`** ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์‚ญ์ œํ•œ ํ›„ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‹ค์‹œ Git ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๊ฒƒ - -### **์ปค๋ฐ‹ ๋ˆ„๋ฝ** - -* ๋ฆฌ์•กํŠธ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•œ ํ›„ `git add`์™€ **`git commit`** ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ปค๋ฐ‹๋˜์ง€ ์•Š์Œ -* ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ œ๋Œ€๋กœ ์ปค๋ฐ‹๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด **`git status`** ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. - -### ๐Ÿ’ซ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• - -1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ **`git status`** ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ Git์˜ ์ƒํƒœ๋ฅผ ํ™•์ธ -2. ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— **`.git`** ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์žˆ๋‹ค๋ฉด ์‚ญ์ œ -3. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ **`git add .`** ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ -4. **`git commit -m "Add React files"`** ๋ช…๋ น์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ -5. **`git push`** ๋ช…๋ น์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊นƒํ—ˆ๋ธŒ์— ํ‘ธ์‹œ - -## 4. ์ž”๋””(commit) ๋‚ด์šฉ์„ ์ง€ํ‚ค๋ฉด์„œ ๋‘ ๊ฐœ์˜ repository ํ•ฉ์น˜๊ธฐ - -### ๋กœ์ปฌ์— ์—†๋Š” ๊ฒฝ์šฐ.. ๋กœ์ปฌ์— clone ํ•ด์ค˜์•ผ ํ•จ - -1. ์ผ๋‹จ ๋‚ด๊ฐ€ ์™„์„ฑ๋ณธ์„ ๋„ฃ์„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ(๋ ˆํฌ1) ์ •ํ•˜๊ธฐ -2. ๋‚˜๋Š” `teamproject_read_blog` ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์™„์„ฑ๋ณธ์œผ๋กœ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. -3. git remote๋กœ `teamproject_read_blog` ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - -* ๋‚˜๋Š” ์ด๋ฆ„ ์ง€์ •์„ ์žŠ์–ด์„œ ๊ทธ๋ƒฅ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ๋Œ€๋กœ ์ €์žฅ์ด ๋จ - -```java -git remote add repo1 https://github.com/YourUsername/Repo1.git -``` - -![](https://velog.velcdn.com/images/prettylee620/post/5a14f0fb-61d2-45c9-828a-f68ce2c96a7e/image.png) - -4. ๊ทธ ํด๋”๋กœ ์ด๋™ ํ•œ๋‹ค - -```java -cd teamproject_read_blog -``` - -5. `git fetch`๋ฅผ ํ•ด์ค€๋‹ค. - -```java -git fetch teamproject_read_blog -``` - -![](https://velog.velcdn.com/images/prettylee620/post/224abfd0-e3f0-42ee-a6f4-ff7c214e25bc/image.png) - -6. ๋กœ์ปฌ์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๊ฒƒ์ด ๋ฐœ์ƒ - -* clone์„ ํ•ด์ค˜์•ผ ํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/41141087-9ac3-4153-b0ef-58c920fca130/image.png) - -7. ๊ทธ ํ›„ ํด๋”๋กœ ์ด๋™ํ•˜๊ณ  `remote`ํ•ด์ฃผ๊ธฐ - -```java -cd teamproject_read_blog -git remote add react_springboot_template https://github.com/GoldenPearls/react_springboot_template.git -``` - -![](https://velog.velcdn.com/images/prettylee620/post/604c5985-4521-4489-a608-2c6fc02e44ad/image.png) - -8. `merge` ํ•ด์ฃผ๊ธฐ - -* ์ฒซ ๋ฒˆ ์งธ ์‹œ๋„ ๊ทธ๋ƒฅ merge ํ•ด์ฃผ๊ธฐ - -```java -git merge react_springboot_template/master -``` - -![](https://velog.velcdn.com/images/prettylee620/post/94378bad-9aab-48a7-8561-13d185dbc44e/image.png) - -* ๋‘ ๋ฒˆ์งธ ์‹œ๋„ : --allow-unrelated-histories - * "refusing to merge unrelated histories"๋Š” ๋‘ Git ์ €์žฅ์†Œ์˜ ๊ธฐ๋ก์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Git์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ‘ํ•ฉ์„ ๊ฑฐ๋ถ€ - -```java -git merge react_springboot_template/master --allow-unrelated-histories -``` - -![](https://velog.velcdn.com/images/prettylee620/post/56856f86-0e5c-4869-951e-61cc71632a8e/image.png) - -9. `push` ํ•ด์ฃผ๊ธฐ - -```java -git push origin main -``` - -![](https://velog.velcdn.com/images/prettylee620/post/5c7bbd03-1989-4e81-bdac-cfbae95a5289/image.png) - -10. ๊ฒฐ๊ณผ : ์ปค๋ฐ‹๋„ ์ž˜ ์ง€ํ‚ค๋ฉด์„œ ํ•ฉ์ณ์ง - -![](https://velog.velcdn.com/images/prettylee620/post/891c917c-35fb-43fa-b78d-3eb890e9f508/image.png) - -## 5. ๋‹จ์–ด ์•Œ๊ธฐ - -### ๐Ÿ’ซ remote๋ž€? - -* **`remote`**๋Š” Git์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹จ์ถ• ์ด๋ฆ„ -* ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” ์ธํ„ฐ๋„ท์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์–ด๋”˜๊ฐ€์— ์กด์žฌํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ˜‘์—…ํ•  ๋•Œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ -* ์˜ˆ๋ฅผ ๋“ค์–ด, GitHub์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก (clone)ํ•˜๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ zip ํŒŒ์ผ๋กœ ๋ฐ›์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๊ฑฐ cloneํ•˜๋ฉด ๊ณ ์ณ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค(์‹ค์ œ ๊ฒฝํ—˜๋‹ด...) - - - - > ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ํŒ€ ๊ณตํ†ต ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๋ฉด์„œ ์•Œ๊ฒŒ ๋œ github ์‚ฌ์šฉ๋ฒ• ๋“ฑ์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค ๊ทธ ์ดํ›„ ๊ณ„์† ์ถ”๊ฐ€์˜ˆ์ •์ด๊ณ  ํŒ€ ํ”„๋กœ์ ํŠธ ๋๋‚˜๋ฉด 1๋ถ€ํ„ฐ 10๊นŒ์ง€ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค diff --git a/developLog/ci-cd/github/github.io/github.io-chipy.md b/developLog/ci-cd/github/github.io/github.io-chipy.md deleted file mode 100644 index 465926e..0000000 --- a/developLog/ci-cd/github/github.io/github.io-chipy.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -description: github.io๋กœ ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 1ํƒ„ ---- - -# github.io Chipy ํ…Œ๋งˆ ์—ฐ๋™ ํ•˜๊ธฐ - -## github.io blog ๋งŒ๋“ค๊ธฐ - -### 1) TMI - -์—์„œ ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๊ณ , ํŒ”๋กœ์šฐ๋„ 100๋ช…์„ ๋„˜์—ˆ๋‹ค. - -![](https://velog.velcdn.com/images/prettylee620/post/3f7c738d-963b-4526-aa53-317ec20774c4/image.png) - -ํ•˜์ง€๋งŒ.. ์˜ฎ๊ธฐ์ง€๋Š” ์•Š๊ณ  ๋‘ ๊ณณ์„ ์šด์˜ํ• ๊นŒ ๊ณ ๋ฏผ์ค‘... **Velog์— ๋‹จ์ ์ด ๋‚ด๊ฐ€ ์“ด ๊ธ€ ํ•œ ๋ˆˆ์— ์•ˆ๋ณด์—ฌ ใ… ใ… ใ… ใ… ** - -Github Page๋ฅผ ํ†ตํ•œ ๋ธ”๋กœ๊น…์„ ์‹œ๋„ํ–ˆ์œผ๋‚˜ ๊นŒ๋‹ค๋กœ์šด ์„ค์น˜์™€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด,์–ด๋ ต๋‹ค๊ธฐ์— ํ…Œ๋งˆ ์„ ํƒ ์‹œ ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ๊ณ„์† update ๋˜๊ณ ์žˆ์œผ๋ฉฐ, ๋‚ด ๋งˆ์Œ์— ๋“ค๊ณ  ์‚ฌ์šฉ์ž๊ฐ€๋งŽ์€ ํ…Œ๋งˆ์ธ [Chipy](https://github.com/cotes2020/jekyll-theme-chirpy)๋ฅผ ์„ ํƒ!! - -### 2) Local์—์„œ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์ „์˜ ์„ธํŒ… - -> [Jekyll-Chirpy-ํ…Œ๋งˆ ๊ธ€์“ฐ๊ธฐ, ์ปค์Šค๋งˆ์ด์ง• ๋“ฑ](https://www.irgroup.org/posts/jekyll-chirpy/) [Jekyll-Chirpy-ํ…Œ๋งˆ๋ฅผ-ํ™œ์šฉํ•œ-Github-๋ธ”๋กœ๊ทธ-๋งŒ๋“ค๊ธฐ(2023-6์›”-๊ธฐ์ค€)](https://jjikin.com/posts/Jekyll-Chirpy-%ED%85%8C%EB%A7%88%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-Github-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0\(2023-6%EC%9B%94-%EA%B8%B0%EC%A4%80\)) - -1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ `fork` ํ•ด์™€์„œ ์ƒ์„ฑํ•˜๊ธฐ - -* ๊ผญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ช…์„ `github ์œ ์ €์ด๋ฆ„.github.io`๋กœ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋‹ค!! - -![](https://velog.velcdn.com/images/prettylee620/post/ba804212-34fe-4099-8e41-6a6823df1e0b/image.png) - -2. branch๋ฅผ master์—์„œ main์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  Branch protection rule๋„ ๊ธฐ๋ณธ๊ฐ’ (์ฒดํฌ x)์œผ๋กœ ์„ค์ • - -![](https://velog.velcdn.com/images/prettylee620/post/b07b61da-641f-4346-b9cf-bbd6495f57e3/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/e792ddd2-8c3f-4a6e-b0eb-a09f62d7570c/image.png) ![](https://velog.velcdn.com/images/prettylee620/post/8766155f-73e3-4313-ab0e-76ae5dae7be3/image.png) - -3. git clone ํ•ด์˜ค๊ธฐ - -* ๋„ฃ์–ด๋‘˜ ํด๋”๋กœ ์ด๋™ ํ•ด์„œ clone ํ•ด์˜ค๊ธฐ - -![](https://velog.velcdn.com/images/prettylee620/post/0ca2568f-abc7-4fb6-b3a6-09e06824052b/image.png) - -```jsx -cd blog -git clone https://github.com/GoldenPearls/GoldenPerals.github.io.git -``` - -## Local์—์„œ ์„ธํŒ… - -> ์ฐธ๊ณ  : [๋ณ„์ค€ : ๋ฃจ๋น„ ์„ค์น˜ ํ•˜๊ธฐ](https://junstar92.tistory.com/5) - -1. CMD๋กœ Ruby ์„ค์น˜ ํ•˜๊ธฐ - -> ๊ผญ 3. ์ด์ƒ ์„ค์น˜ ํ•  ๊ฒƒ ! - -2. Ruby๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ๋ฒ„์ „์„ ๊ฒ€์ƒ‰์‹œ ๋‚˜์˜ฌ ๊ฒƒ์ž„ - -```jsx -cd GoldenPerals.github.io -ruby -v -``` - -![](https://velog.velcdn.com/images/prettylee620/post/6dcefcd1-9818-4d14-bd6b-ab3054d3dbbd/image.png) - -์ด๋ ‡๊ฒŒ๋งŒ ์„ค์น˜ํ•˜๊ณ  ์„œ๋ฒ„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ์Œ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋Š” `ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •`์ด ํ•„์š”ํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/f45f43a4-8214-4e2f-848c-0b7ac29187f8/image.png) - -2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ํ•„์š” Path ์—์„œ ํŽธ์ง‘ - -![](https://velog.velcdn.com/images/prettylee620/post/f94734d6-e67e-4f9f-a644-f224264b0aa3/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/33a3b039-2919-4ee7-a89c-124e4004ff4d/image.png) - -```jsx -C:\Users\rmawn\AppData\Local\Microsoft\WindowsApps -``` - -3. jekyll ์‹คํ–‰์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์„ค์น˜ - -![](https://velog.velcdn.com/images/prettylee620/post/0c1d675f-0341-47b3-a015-aecc6926476f/image.png) - -4. npm์„ ํ†ตํ•ด node.js ๋ชจ๋“ˆ ์„ค์น˜ - -```jsx -npm install && npm run build -``` - -![](https://velog.velcdn.com/images/prettylee620/post/ac853e67-6313-4ebf-a208-642aef312503/image.png) - -5. ์„ค์น˜ ์™„๋ฃŒ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ์—์„œ jekyll์„ ์‹คํ–‰ - -```jsx -jekyll serve -``` - -![](https://velog.velcdn.com/images/prettylee620/post/f710e210-be75-4270-86df-c936a55d35e3/image.png) - -#### ๐Ÿ™„ **๋ฌธ์ œ ๋ฐœ์ƒ** - -![](https://velog.velcdn.com/images/prettylee620/post/bd7fa754-ede0-42d6-9a3c-ef3c184a1643/image.png) - -๋จผ์ € ์œ„์—์„œ ์ฒ˜๋Ÿผ - -1. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€ -2. `Gemfile` ํŒŒ์ผ ์ˆ˜์ • - -![](https://velog.velcdn.com/images/prettylee620/post/343c2a30-b6ff-4e33-b098-8800ddb60167/image.png) - -3. ์›๋ž˜์˜ ์ฝ”๋“œ - -```jsx -# frozen_string_literal: true - -source "https://rubygems.org" - -gemspec - -group :test do - gem "html-proofer", "~> 5.0" -end -``` - -4. ์ˆ˜์ • - -```jsx -# frozen_string_literal: true - -source "https://rubygems.org" - -gemspec - -group :test do - gem "html-proofer", "~> 5.0" -end - -gem "tzinfo" # ์‹œ๊ฐ„๋Œ€ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -gem "tzinfo-data" # Windows์—์„œ tzinfo๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ -``` - -6. cmd ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผœ์„œ ํ™•์ธํ•ด๋ณด๊ธฐ - -```jsx -jekyll serve -``` - -![](https://velog.velcdn.com/images/prettylee620/post/4577b948-a8b2-492b-b7cc-6a2d52a88a32/image.png) - -7. ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ 127.0.0.1:4000 ์ฃผ์†Œ๋กœ ๋ธ”๋กœ๊ทธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ธ”๋กœ๊ทธ ๋‚ด ์—ฌ๋Ÿฌ ๋ฉ”๋‰ด ๋ฐ ๊ธฐ๋Šฅ๋“ค๋„ ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ - -![](https://velog.velcdn.com/images/prettylee620/post/612687e4-7490-4f68-8d08-92db45e2de9a/image.png) - -![](https://velog.velcdn.com/images/prettylee620/post/58c63c98-fce9-4af0-a80e-668bcc89f588/image.png) - -```rust -# frozen_string_literal: true - -source "https://rubygems.org" - -gemspec - -group :test do - gem "html-proofer", "~> 5.0" -end - -gem "tzinfo" # ์‹œ๊ฐ„๋Œ€ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -gem "tzinfo-data" # Windows์—์„œ tzinfo๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ - -``` - -### ๊ธ€ ์“ฐ๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ - -> https://github.com/jekyll/jekyll-compose - -### ๋ฐฐํฌํ•˜๊ธฐ - -1. ๋ฐฐํฌํ•˜๊ธฐ ์ „ gitgnore ์„ธํŒ…ํ•˜๊ธฐ - -![](https://velog.velcdn.com/images/prettylee620/post/beb0ace2-c081-4389-8723-3b52daa3d78b/image.png) - -* ์šฐ์„ , `.gitignore` ํŒŒ์ผ์„ ์—ด์–ด์„œ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ฃผ์„ ์ฒ˜๋ฆฌ - -```jsx -# Misc -#_sass/dist -#assets/js/dist -``` - -2. ๋ฐฐํฌํ•˜๊ธฐ - -```jsx -git add . -git commit -m "docs: add new blog post" -git push -``` - -3. setting > page > git action ์ถ”๊ฐ€ ![](https://velog.velcdn.com/images/prettylee620/post/cb6253bb-ef56-4dc0-98a2-e6073bf194bc/image.png) - -* configure๊นŒ์ง€ ํ•ด์ค˜์•ผ ํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/e95923a4-4544-446f-bc0a-3f37f955572d/image.png) - -4. ๋กœ์ปฌ์ด๋ž‘ ๋งž์ถฐ์ค˜์•ผ ํ•จ - -![](https://velog.velcdn.com/images/prettylee620/post/51eb7b1b-9512-4b0f-b59a-e42440c1f450/image.png) - -5. ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ์œ„ํ•œ \_config.yml ์ˆ˜์ •ํ•˜๊ธฐ - -> [์ฐธ๊ณ  ๊นƒํ—ˆ๋ธŒ](https://github.com/focuschange-test/focuschange-test.github.io/blob/main/\_config.yml) - -```jsx -git add . -git commit -m "chore: update config.yml settings" -git push -``` - -ํ›”... ์ผ๋‹จ ๋ฐฐํฌ๋งŒ ํ•ด๋‘๊ณ  ... ์ง€๊ธˆ gitbook ํ…Œ๋งˆ๊ฐ€ ๋” ๋งˆ์Œ์— ๋“ค์–ด์„œ gitbook์—๋งŒ ํ•ด๋‘˜๊นŒ? ์•„๋‹˜ github.io๋ž‘ ์—ฐ๊ฒฐํ•ด์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„๊นŒ ๊ณ ๋ฏผ์ค‘์ž„ - -๋‚ด [gitbook](https://mellona-log.gitbook.io/log) diff --git a/developLog/ci-cd/github/github.md b/developLog/ci-cd/github/github.md deleted file mode 100644 index 8ee5bb9..0000000 --- a/developLog/ci-cd/github/github.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: github ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด ๋ชจ์•„๋ณด๊ธฐ -icon: git -layout: - title: - visible: true - description: - visible: true - tableOfContents: - visible: true - outline: - visible: true - pagination: - visible: false ---- - -# github ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด - -## 1. ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ ๋งž์ถ”๊ธฐ - -> `git reset --hard` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ ธ์„ ๋•Œ, ๋กœ์ปฌ ์ €์žฅ์†Œ๋Š” ๊ทธ ์ปค๋ฐ‹ ์ดํ›„์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ƒํƒœ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ด๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๊ฐ•์ œ๋กœ ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -1. **`git reset --hard` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆผ** - - ์ด๋ฏธ ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค: - - ```bash - git reset --hard 6bec4114ed3cfd83858aa59311ca0ac9813d6c18 - ``` - - ์ด ๋ช…๋ น์–ด๋Š” ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ `6bec4114ed3cfd83858aa59311ca0ac9813d6c18` ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. -2. **์›๊ฒฉ ์ €์žฅ์†Œ์— ๊ฐ•์ œ๋กœ ํ‘ธ์‹œ** - - ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๊ฐ•์ œ๋กœ ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - - ```bash - git push origin main --force - ``` - - ์—ฌ๊ธฐ์„œ `main`์€ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ํ•ด๋‹น ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -### ์ฃผ์˜์‚ฌํ•ญ - -* **๊ฐ•์ œ ํ‘ธ์‹œ (`--force`)**: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ฎ์–ด์จ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์ž‘์—…์€ ์‹ ์ค‘ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ด ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด, ๊ทธ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -* **ํžˆ์Šคํ† ๋ฆฌ ์†์‹ค**: ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋˜๋Œ๋ฆฐ ์ดํ›„์˜ ๋ชจ๋“  ์ปค๋ฐ‹์ด ํžˆ์Šคํ† ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๋ฏ€๋กœ, ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ฐฑ์—…์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -### ์ „์ฒด์ ์ธ ์ ˆ์ฐจ ์š”์•ฝ - -1. **๋กœ์ปฌ ์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ**: `git reset --hard ` -2. **์›๊ฒฉ ์ €์žฅ์†Œ์— ๊ฐ•์ œ ํ‘ธ์‹œ**: `git push origin --force` - -์ด ์ž‘์—…์„ ํ†ตํ•ด ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ƒํƒœ๋ฅผ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - - - -## 2. Forkํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ commit ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•œ ์ž‘์—… - -> ์ฐธ๊ณ  : [https://soranhan.tistory.com/11](https://soranhan.tistory.com/11) - -1. **์ผ๋‹จ ๋‚ด github์— ์ƒˆ๋กœ์šด ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.** -2. **terminal์„ ์—ฐ๋‹ค.** -3. **๋ณต์‚ฌํ•˜๊ณ ์ž ํ•˜๋Š” repository๋ฅผ bare cloneํ•œ๋‹ค.** - -``` -$ git clone --bare https://github.com/exampleuser/old-repository.git -``` - -4. **์ƒˆ๋กœ์šด ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋กœ Mirror-push** - -``` -$ cd old-repository.git -$ git push --mirror https://github.com/exampleuser/new-repository.git -``` - -5. **์ฒ˜์Œ์— ์ž„์‹œ๋กœ ์ƒ์„ฑํ–ˆ๋˜ local repository๋ฅผ ์‚ญ์ œ** - -``` -$ cd .. -$ rm -rf old-repository.git -``` - -6. ๋‹ค๋งŒ ์ด๊ฒŒ ๊ฐ€๋” ์•ˆ๋˜๋Š” ๊ฒŒ ์žˆ๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” `๊ถŒํ•œ` ๋•Œ๋ฌธ์ด๊ธฐ์— ํ† ํฐ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ทธ๊ฑธ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•จ - -> GitHub Personal Access Token ์ƒ์„ฑ -> -> 1. GitHub ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. -> 2. [GitHub์˜ Personal Access Token ์ƒ์„ฑ ํŽ˜์ด์ง€](https://github.com/settings/tokens)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. -> 3. "Generate new token" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. -> 4. **๊ถŒํ•œ(Scopes)**์—์„œ `repo`, `workflow`, `admin:repo_hook` ๊ถŒํ•œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ† ํฐ์€ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. -> 5. ์ƒ์„ฑ๋œ ํ† ํฐ์„ ๋ณต์‚ฌํ•ด๋‘ก๋‹ˆ๋‹ค. ์ด ํ† ํฐ์€ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. -> 6. ๊ฐœ์ธ์ž˜ํŽ˜์ด์ง€์— ํ† ํฐ๊ธฐ๋กํ•ด๋‘๊ธฐ!!! - -* Personal Access Token (PAT) ์‚ฌ์šฉ : `git push --mirror` ๋ช…๋ น์–ด์— Personal Access Token์„ ํฌํ•จํ•˜์—ฌ ์ธ์ฆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -``` -git push --mirror https://@github.com/exampleuser/new-repository.git -``` - diff --git a/developLog/cs/cs-bookmark.md b/developLog/cs/cs-bookmark.md deleted file mode 100644 index 4e06d29..0000000 --- a/developLog/cs/cs-bookmark.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -icon: circle-bookmark ---- - -# CS ๊ด€๋ จ BOOKMARK - -> ์ด ๋ฐ‘์— ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘ ์ž๊ธฐ ์ทจํ–ฅ์„ ๊ณจ๋ผ ํ•˜๋‚˜๋งŒ ๋ณด๊ณ  ๋‹ค๋ฅธ ๊ฑธ๋กœ ๋ถ€์กฑํ•œ ๊ฒƒ ์ฑ„์›Œ๊ฐ€๋ฉด ์ถฉ๋ถ„ํ•  ๊ฒƒ ๊ฐ™๋‹ค. - -* [\[IT ๊ฐœ๋ฐœ์ž์™€ ์ผํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ง€์‹\] A to Z ์ž๋ฃŒ ๋ชจ์Œ์ง‘ By ๊ทธ๋žฉ](https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304) ์›ฌ๋งŒํ•œ CS ์ง€์‹ ์ง‘ํ•ฉ์ฒด IT ๋ถ„์•ผ ์ข…์‚ฌ์ž๋ผ๋ฉด ๋ด์•ผํ•จ -* [\[IT ๊ฐœ๋ฐœ์ž์™€ ์ผํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ง€์‹\] A to Z ์ž๋ฃŒ ๋ชจ์Œ์ง‘ By ๊ทธ๋žฉ์˜ ์–ด๋ ค์šด IT ์šฉ์–ด ์ •๋ฆฌ](https://www.grabbing.me/IT-e042e5f23b2147878ead089c97ef3c77#35a8ac77dfa84380bdd9d1c4e29e84d3) ์œ„์™€ ๋˜‘๊ฐ™์€ ๊ณณ์œผ๋กœ ์–ด๋ ค์šด IT ์šฉ์–ด ๋ชจ์Œ -* [์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „](https://gyoogle.dev/blog/) ๊ธฐ์ˆ  ๋ฉด์ ‘์— ๋Œ€ํ•œ ์ •๋ฆฌ๊ฐ€ ์ฒด๊ณ„์ ์œผ๋กœ ์ž˜๋˜์–ด ์žˆ๋Š” ํŽธ -* [์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „](https://github.com/WooVictory/Ready-For-Tech-Interview) ์œ„์˜ ์›น์‚ฌ์ดํŠธ GITHUB ๋ฒ„์ „ -* [๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ฉด์ ‘์‹œ ๋ฌผ์–ด๋ณธ ๊ฒƒ์„ VELOG์— ์ •๋ฆฌํ•œ ๊ฒƒ](https://velog.io/@matisse/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EC%A0%95%EB%A6%AC-CS) 3๋…„์ „ ๊ธ€์ด๊ธด ํ•œ๋ฐ ์ •๋ฆฌ๊ฐ€ ์ž˜๋˜์žˆ์–ด์„œ ๋‚˜๋„ ๋‚˜์ค‘์— ๋ฉด์ ‘์‹œ ์ €๋Ÿฐ์‹์œผ๋กœ ์ •๋ฆฌํ•ด์•ผ ๊ฒ ๋‹ค๋ฅผ ์ƒ๊ฐํ•จ -* [READY FOR TECH INTERVIEW](https://github.com/WooVictory/Ready-For-Tech-Interview) ์ด ๊ณณ์€ ์‹ ์ž… ํ˜น์€ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์ง€์‹์„ ์ •๋ฆฌํ•˜๋Š” GITHUB -* [Technical Interview Guidelines for Beginners](https://github.com/JaeYeopHan/Interview\_Question\_for\_Beginner) ์‹œ์ž‘ํ•˜๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌํ•œ GITHUB -* [Backend-Interview-Question](https://github.com/ksundong/backend-interview-question) ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ž…์‚ฌ์‹œ ์งˆ๋ฌธ, ์˜ˆ์ƒ์งˆ๋ฌธ GITHUB -* [ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ํ•˜๊ธฐ -1ํŽธ](https://f-lab.kr/blog/frontend-interview-1) ํ”„๋ก ํŠธ์•ค๋“œ ๋ฉด์ ‘์งˆ๋ฌธ์ •๋ฆฌ๋˜์–ด ์žˆ๋Š” F-LAB -* [์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์งˆ๋ฌธ](https://f-lab.kr/blog/java-backend-interview-2) ์ž๋ฐ” ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ํ•˜๊ธฐ์ •๋ฆฌ ๋˜์–ด ์žˆ๋Š” F-LAB -* [์‹ค์ œ๋กœ ๋ฐ›์€ ํ”„๋ก ํŠธ์•ค๋“œ ์งˆ๋ฌธ๋ชจ์Œ ์ •๋ฆฌ](https://xiubindev.tistory.com/119) ํ”„๋ก ํŠธ์•ค๋“œ ์งˆ๋ฌธ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด ์žˆ๋Š” Tistory -* [์ปดํ“จํ„ฐ ๊ณผํ•™ ํ‚ค์›Œ๋“œ ์ด์ •๋ฆฌ](https://csnote.net/) : ์ปดํ“จํ„ฐ ๊ณผํ•™ ํ‚ค์›Œ๋“œ๊ฐ€ ์ด ์ •๋ฆฌ๋˜์–ด ์žˆ๋Š” ์‚ฌ์ดํŠธ diff --git a/developLog/cs/etc/cs.md b/developLog/cs/etc/cs.md deleted file mode 100644 index 74659e2..0000000 --- a/developLog/cs/etc/cs.md +++ /dev/null @@ -1,424 +0,0 @@ -# ๋ฉ€ํ‹ฐ์บ ํผ์Šค์—์„œ ๋ฐฐ์šด cs ์ง€์‹ - -## 1. ์„œ๋ฒ„(Server) - -### **1) ์„œ๋ฒ„๋ž€..** - -**์–ธ์–ด์ ์ธ ๊ด€์ **์—์„œ ๋ณด์ž๋ฉด - -* ํ…Œ๋‹ˆ์Šค, ํƒ๊ตฌ, ๋ฐฐ๊ตฌ ๋”ฐ์œ„์—์„œ ํ•˜๋Š” ์„œ๋ธŒํ•˜๋Š” ์ชฝ, ๋˜๋Š” ๊ทธ ์‚ฌ๋žŒ -* ์Œ์‹, ์Œ๋ฃŒ๋ฅผ ๋‚ด๋Š”๋ฐ ์“ฐ๋Š” ๋„๊ตฌ -* ์ฃผ๋œ ์ •๋ณด์˜ ์ œ๊ณต์ด๋‚˜, ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ - -### **2) ์ปดํ“จํ„ฐ์˜ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.** - -์›น๋ธŒ๋ผ์šฐ์ € : ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ : ์„œ๋ฒ„ - -### **3) ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์œผ๋กœ ์‹œ์ž‘๋œ๋‹ค.** - -์„œ๋ฒ„๋Š” ๊ทธ ์ž์ฒด๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•ด ์ผ๋ฐฉ์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ `์š”์ฒญ(request)`์„ ๋ฐ›์•„์„œ ์ฒ˜์Œ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์„œ๋น„์Šค๋ฅผ `์ œ๊ณต(์‘๋‹ต, response)`ํ•œ๋‹ค. - -1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ๋ฌด์–ธ๊ฐ€์˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•œ๋‹ค. -2. ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ ๋งž์ถฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. -3. ์„œ๋ฒ„๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜ -4. ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค. - -### **4) ์›น์„œ๋น„์Šค์— ๋Œ€์ž…ํ•ด๋ณด์ž** - -**ํด๋ผ์ด์–ธํŠธ** : ๊ตฌ๊ธ€ ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ์™€ ๊ฐ™์€ ์›น๋ธŒ๋ผ์šฐ์ € **์„œ๋ฒ„** : ์›น์‚ฌ์ดํŠธ(์˜ ๊ตฌ์„ฑ ํŒŒ์ผ)์ด ์žˆ๋Š” ์ปดํ“จํ„ฐ - -5. ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์›น์„œ๋ฒ„์— ใ…‡ใ…‡ ์‚ฌ์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ์‹ญ์‹œ์˜ค๋ผ๊ณ  ์š”์ฒญํ•œ๋‹ค. -6. ์›น์„œ๋ฒ„๋Š” ใ…‡ใ…‡ ์‚ฌ์ดํŠธ์˜ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค. -7. ์›น์„œ๋ฒ„๋Š” ใ…‡ใ…‡ ์‚ฌ์ดํŠธ์˜ ํŒŒ์ผ์„ ์›น๋ธŒ๋ผ์šฐ์ €์— ๋ฐ˜ํ™˜ํ•œ๋‹ค. -8. ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ใ…‡ใ…‡์‚ฌ์ดํŠธ์˜ ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ํ™”๋ฉด์— ํ‘œ์‹œํ•œ๋‹ค. โ‡’ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์„ `ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ์‹œ์Šคํ…œ`์ด๋ผ๊ณ  ํ•จ - -์ถœ์ฒ˜ : ์„œ๋ฒ„์˜ ๊ธฐ์ดˆ ์ฑ… - -*** - -## 2. ์›น ์„œ๋ฒ„(Web Server) - -### 1) ์›น์„œ๋น„์Šค - -**ํด๋ผ์ด์–ธํŠธ** : ๊ตฌ๊ธ€ ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ์™€ ๊ฐ™์€ ์›น๋ธŒ๋ผ์šฐ์ € **์„œ๋ฒ„** : ์›น์‚ฌ์ดํŠธ(์˜ ๊ตฌ์„ฑ ํŒŒ์ผ)์ด ์žˆ๋Š” ์ปดํ“จํ„ฐ - - - -### **2) ์›น ์„œ๋ฒ„**๋ž€(WEB) = ์•„ํŒŒ์น˜ - -* ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ํ˜น์€ ๋‘ ๊ฐœ๊ฐ€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ -* **๋ง ๊ทธ๋Œ€๋กœ ์ž‘์„ฑ๋œ html ํŽ˜์ด์ง€ ๋“ฑ์„ ๋„คํŠธ์›Œํฌ ๋ง์— ์ข…์†๋˜์ง€ ์•Š๊ณ , ์›น์„œ๋น„์Šค๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜** -* ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์„œ๋ฒ„์—์„œ ๋ถˆ๋ ค์ง„ ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์š”์ฒญ -* ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅธ `์›น ์„œ๋ฒ„(ํ•˜๋“œ์›จ์–ด)`์— ๋„๋‹ฌ ์‹œ, `HTTP ์„œ๋ฒ„(์†Œํ”„ํŠธ์›จ์–ด)`๋Š” ์š”์ฒญ๋œ ๋ฌธ์„œ๋ฅผ HTTP๋ฅผ ์ด์šฉํ•ด ๋ณด๋‚ด์คŒ - -#### ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด ์ข…๋ฅ˜ - -* ์„œ๋น„์Šค๋ณ„๋กœ ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ํŠน์ง•์ด ์žˆ์œผ๋‚˜ ์›น ์„œ๋ฒ„๋กœ์˜ ๊ธฐ๋Šฅ์€ ๊ณตํ†ต -* APache -* IIS -* nginx - -### 3) ํ•˜๋“œ์›จ์–ด ์ธก๋ฉด - -* `์›น ์„œ๋ฒ„`๋Š” ์›น ์„œ๋ฒ„์˜ ์†Œํ”„ํŠธ์›จ์–ด์™€ website์˜ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ์ปดํ“จํ„ฐ -* ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์ปดํ“จ - * **์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ**์ด๋ž€? - * HTML๋ฌธ์„œ, images, CSS stylesheets, JavaScript files -* ์›น ์„œ๋ฒ„๋Š” ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ๋“ค์ด ์›น ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ(์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋“ค)์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ - -### 4) ์†Œํ”„ํŠธ์›จ์–ด ์ธก๋ฉด - -* ์›น ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜ธ์ŠคํŠธ์— ํŒŒ์ผ๋“ค์— ์ ‘๊ทผํ•˜๋Š”์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ -* HTTP ์„œ๋ฒ„๋Š” URL๊ณผ HTTP(์šฐ๋ฆฌ์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ)์˜ ์†Œํ”„ํŠธ์›จ์–ด - * **URL์˜ ๊ตฌ์„ฑ์š”์†Œ** - * ํ”„๋กœํ† ์ฝœ, ์„œ๋ฒ„์ฃผ์†Œ, ํฌํŠธ๋ฒˆํ˜ธ, ํŒŒ์ผ๊ฒฝ๋กœ -* `HTTPS ์„œ๋ฒ„, HTTP ์„œ๋ฒ„`๋ฅผ ์›น ์„œ๋ฒ„๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ํ•จ - -๐Ÿ“Œ ์ฐธ๊ณ ๋กœ ใ…‡ใ…‡ ์„œ๋ฒ„์˜ ใ…‡ใ…‡์—๋Š” **์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์˜ ์ด๋ฆ„**์„ ๋„ฃ๋Š”๋‹ค. ex. ์นด์นด์˜คํ†ก ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์นด์นด์˜คํ†ก ์„œ๋ฒ„ ex2. ์›น ์„œ๋ฒ„๋ฅผ โ€˜HTTP ์„œ๋ฒ„โ€™ ๋ฉ”์ผ ์„œ๋ฒ„๋ฅผ โ€˜SMTP ์„œ๋ฒ„โ€™๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ - - - -* ์ถœ์ฒ˜: https://developer.mozilla.org/ko/docs/Learn/Common\_questions/Web\_mechanics/What\_is\_a\_web\_server - -*** - -## 3. ์›น ์ปจํ…Œ์ด๋„ˆ(Web Container) - -### 1) ์›น ์ปจํ…Œ์ด๋„ˆ๋ž€? - -* `์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ`๋ผ๊ณ ๋„ ํ•จ -* **JSP + ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด** -* ์›น ์„œ๋ฒ„์˜ ์ปดํฌ๋„ŒํŠธ ์ค‘ ํ•˜๋‚˜๋กœ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ๊ณผ ์ƒํ˜ธ์ž‘์šฉ -* **์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌ**ํ•˜๊ณ , URL๊ณผ ํŠน์ • ์„œ๋ธ”๋ฆฟ์„ ๋งตํ•‘ํ•˜๋ฉฐ URL ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–๋„๋ก ๋ณด์žฅ -* ์„œ๋ธ”๋ฆฟ, ์ž๋ฐ” ์„œ๋ฒ„ ํŽ˜์ด์ง€(JSP) ํŒŒ์ผ, ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„-์‚ฌ์ด๋“œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ `์š”์ฒญ`์„ ๋‹ค๋ฃฌ๋‹ค. -* ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ƒ์„ฑ, ์„œ๋ธ”๋ฆฟ์„ ๋กœ๋“œ์™€ ์–ธ๋กœ๋“œํ•˜๋ฉฐ, `์š”์ฒญ๊ณผ ์‘๋‹ต` ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ณ , ๋‹ค๋ฅธ ์„œ๋ธ”๋ฆฟ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ -* ์›น ์ปดํฌ๋„ŒํŠธ ์ž๋ฐ” EE ์•„ํ‚คํ…์ฒ˜ ์ œ์•ฝ์„ ๊ตฌํ˜„ํ•˜๊ณ , ๋ณด์•ˆ, ๋ณ‘ํ–‰์„ฑ, ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ, ํŠธ๋žœ์žญ์…˜, ๋ฐฐํฌ ๋“ฑ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ์›น ์ปดํฌ๋„ŒํŠธ์˜ ์‹คํ–‰ํ™˜๊ฒฝ ๋ช…์„ธ - -### 2) ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก - -* ์•„ํŒŒ์น˜ ํ†ฐ์บฃ -* ์•„ํŒŒ์น˜ ์ œ๋กœ๋‹ˆ๋ชจ -* ์˜ค๋ผํด์˜ ํด๋ž˜์Šคํ”ผ์‹œ -* ์ œ์ด๋ณด์Šค -* ์ถœ์ฒ˜ - -[https://ko.wikipedia.org/wiki/์›น\_์ปจํ…Œ์ด๋„ˆ](https://ko.wikipedia.org/wiki/%EC%9B%B9\_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88) - -[https://helloworld-88.tistory.com/71#:\~:text=โ– ](https://helloworld-88.tistory.com/71) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (WAS%2C Web Application Server)๋ž€%3F,์ปดํ“จํ„ฐ๋‚˜ ์žฅ์น˜์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด (์†Œํ”„ํŠธ์›จ์–ด ์—”์ง„)์ด๋‹ค. - -*** - -## 4. WAS(Web Application Server) = tomcat - -### 1) WAS๋ž€? - -* ์›น ์„œ๋ฒ„ + ์›น ์ปจํ…Œ์ด๋„ˆ(Servel ์ปจํ…Œ์ด) -* ์ธํ„ฐ๋„ท ์ƒ์—์„œ HTTP๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ๋‚˜ ์žฅ์น˜์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด(์†Œํ”„ํŠธ์›จ์–ด ์—”์ง„) -* `๋™์  ์„œ๋ฒ„ ์ฝ˜ํ…์ธ ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ`์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ์›น ์„œ๋ฒ„์™€ ๊ตฌ๋ณ„๋˜๋ฉฐ, ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์™€ ๊ฐ™์ด ์ˆ˜ํ–‰ -* ์›น ์ƒ์— ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ์„œ๋ฒ„ - -#### ๊ธฐ๋Šฅ - -* ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์† ๊ธฐ๋Šฅ ์ œ๊ณต -* ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ -* ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰ -* Web Service ํ”Œ๋žซํผ์˜ ์—ญํ™œ - -#### WAS ์ข…๋ฅ˜ - -* tomcat -* tMax jeus -* Oracle - -### 2) WEB ์„œ๋ฒ„์™€ WAS ๋น„๊ต - -* WEB ์„œ๋ฒ„ : HTML ๋ฌธ์„œ์™€ ๊ฐ™์€ `์ •์  ์ปจํ…์ธ `๋ฅผ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ฒƒ(HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ฝํž ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ) -* WAS ์„œ๋ฒ„ : asp, php, jsp ๋“ฑ ๊ฐœ๋ฐœ ์–ธ์–ด๋ฅผ ์ฝ๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ `๋™์  ์ปจํ…์ธ `, ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์„œ๋น„์Šค ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ - -*** - -## 5. HTTP(HyperText Treansfer protocol) - -### 1) HTTP๋ž€? - -* ์›น ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ์ด์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ๋ณด์•ˆ์„ฑ์ด ์•ˆ ์ข‹์Œ -* ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ ์›น ๋ณผ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ -* ์ธํ„ฐ๋„ท์—์„œ ํ•˜์ดํผํ…์ŠคํŠธ(hypertext) ๋ฌธ์„œ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹ ๊ทœ์•ฝ -* ๋™์ž‘์›๋ฆฌ : POST,GET - -### 2) HTTPS(HTTP Secure)๋ž€ - -* ์•”ํ˜ธํ™”๋œ ์ƒํƒœ๋กœ ์›น์„ ๋ณผ ๋•Œ HTTP์— Secure์„ ๋œปํ•˜๋Š” s๊ฐ€ ๋ถ™์–ด HTTPS๋ผ๊ณ  ํ•จ - -*** - -## 7. ํ”„๋กœํ† ์ฝœ(Protocol) - -### 1) ํ”„๋กœํ† ์ฝœ์ด๋ž€? - -* ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๋˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์€ ์ปดํ“จํ„ฐ๋‚˜ ์›๊ฑฐ๋ฆฌ ํ†ต์‹  ์žฅ๋น„ ์‚ฌ์ด์—์„œ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์–‘์‹๊ณผ ๊ทœ์น™์˜ ์ฒด๊ณ„, ํ†ต์‹  ๊ทœ์•ฝ ๋ฐ ์•ฝ์† -* ํ†ฐ ๋งˆ๋ฆด์€ ์ปดํ“จํ„ฐ๊ฐ€ **๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ๋ฉ”์„ธ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ๋„์ฐฉํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ, ๋„์ฐฉํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๋ฉ”์„ธ์ง€๋ฅผ ์žฌ์ „์†กํ•˜๋Š” ์ผ๋ จ์˜ ๋ฐฉ๋ฒ•**์„ ๊ธฐ์ˆ ์  ์€์–ด๋กœ ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•œ๋‹ค. -* ํ†ต์‹ ์„ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ์ด ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์—๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ, ์ œ์–ด ๊ธฐ๋Šฅ, ๊ด€๋ฆฌ์  ๊ธฐ๋Šฅ - -### 2) ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธ ์š”์†Œ - -* `๊ตฌ๋ฌธ(Syntax)` : ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹(Format), ๋ถ€ํ˜ธํ™”(Coding), ์‹ ํ˜ธ ๋ ˆ๋ฒจ(Singnal Level) ๋“ฑ์„ ๊ทœ์ • -* `์˜๋ฏธ(Semantics)` : ๋‘ ๊ธฐ๊ธฐ๊ฐ„์˜ ํšจ์œจ์ ์ด๊ณ  ์ •ํ™•ํ•œ ์ •๋ณด ์ „์†ก์„ ์œ„ํ•œ ํ˜‘์กฐ ์‚ฌํ•ญ๊ณผ ์˜ค๋ฅ˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ **์ œ์–ด ์ •๋ณด๋ฅผ ๊ทœ์ •** -* `์‹œ๊ฐ„(Timing)` : ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํ†ต์‹  ์†๋„, ๋ฉ”์„ธ์ง€์˜ ์ˆœ์„œ ๋“ฑ์„ ๊ทœ์ • - -### 3) ํ”„๋กœํ† ์ฝœ ์ข…๋ฅ˜ - -
- -*** - -## 8. ํฌํŠธ(Port) - -* ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํŠน์ • PC๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” IP ์ฃผ์†Œ์™€ ๊ทธ ์ฃผ์†Œ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ •ํ•ด์ง„ ํ†ต๋กœ - * IP ์ฃผ์†Œ : ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ํŠน์ • PC์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒด๊ณ„ -* IP ๋‚ด์—์„œ **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํ˜ธ ๊ตฌ๋ถ„(ํ”„๋กœ์„ธ์Šค ๊ตฌ๋ถ„)์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆํ˜ธ** -* ์ฃผ๋กœ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€ ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ -* ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์€ ํฌํŠธ๋Š” ์ค‘๋ณตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. -* **ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 0\~ 65,535 ๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.** -* **ํฌํŠธ ๋ฒˆํ˜ธ** - * IP ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” PC์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต๋กœ - * `์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ ๋ฒˆํ˜ธ` - * 22 : SSH - * 80 : HTTP - * 443 : HTTPS - -#### ์›น ์„œ๋น„์Šค์— ์ด์šฉ๋˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ - -* 80๋ฒˆ ํฌํŠธ(์‹ค์ œ ์ƒ์šฉํ™”๋œ ์„œ๋น„์Šค ์ œ๊ณต ์‹œ ์ด์šฉ) -* ์ถœ์ฒ˜ - -[https://hanamon.kr/๋„คํŠธ์›Œํฌ-๊ธฐ๋ณธ-ip-์ฃผ์†Œ์™€-ํฌํŠธ-port/](https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EB%B3%B8-ip-%EC%A3%BC%EC%86%8C%EC%99%80-%ED%8F%AC%ED%8A%B8-port/) - -*** - -## 9. ์ •์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋™์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - -### 1) ์ •์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - -* ์ฃผ์–ด์ง„ HTML ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•จ - -### 2) ๋™์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - -* ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜, ํ•„์š”์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ํŽ˜์ด์ง€ ์ƒ์„ฑํ•ด์„œ ๋ณด์—ฌ์คŒ - -#### CGI - -* ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์•„๋“ค์ด๊ธฐ ์œ„ํ•ด `
`๊ณผ `` ํƒœ๊ทธ๋ฅผ ๋„์ž…ํ•œ ๊ฐ€์žฅ ์ดˆ์ฐฝ๊ธฐ์˜ ๋™์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ  - -#### JSP(Java server page) - -* HTML ์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๋™์  ์›นํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์›น์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„๊ตฌ -* JSP ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ(Servlet) ์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ **์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ ๋™์ž‘**๋˜๋ฉด์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์›นํŽ˜์ด์ง€์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ต - * `์ž๋ฐ” ์„œ๋ธ”๋ฆฟ`์ด๋ž€? - * ์„œ๋ธ”๋ฆฟ์ด๋ž€ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ - * ์ž๋ฐ” ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์ง€๋ฉฐ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ( Web Application Sever ) ์œ„์—์„œ ์ปดํŒŒ์ผ ๋˜๊ณ  ๋™์ž‘ -* ํ•„์š” ์†Œํ”„ํŠธ์›จ์–ด - * ์›น๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ ๋“ฑ) - * JSP ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ์›น ์„œ๋ฒ„(ํ†ฐ์บฃ ๋“ฑ) - * JDK(java delvelopment kit, jsp ์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰์„ ์œ„ํ•ด ํ•„์š”) - * ํ†ตํ•ฉ ๊ฐœ๋ฐœํ™˜๊ฒฝ(์ดํด๋ฆฝ์Šค ๋“ฑ) - * ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„(MySQL, Oracle) - * ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(JDBC, Apache Commons ๋“ฑ) -* ์ถœ์ฒ˜ - -[https://javacpro.tistory.com/43](https://javacpro.tistory.com/43) - -#### ASP - -* IIS๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ASP ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ด์šฉ - -#### ํ†ฐ์บฃ(tomcat) ์„œ๋ฒ„ - -* HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ ์™ธ์—, JSP ๊ธฐ๋ฐ˜์˜ ๋™์  ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์›น ์„œ๋ฒ„ -* ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ†ฐ์บฃ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์šฉ๋˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ - * **8080 ํฌํŠธ** -* ์ด๋Ÿฐ ์—๋Ÿฌ ๋ฐœ์ƒ ์›์ธ - -
- -* ์™ธ๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ํ†ฐ์บฃ ์„œ๋ฒ„ ์กด์žฌ -* ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์ •๋ณด๊ฐ€ ์ œ๋Œ€๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š์„ ๋•Œ -* ํ†ฐ์บฃ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์›น ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ผ๋•Œ - -CF. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ € ์„œ๋ฒ„ ๋™์‹œ ์ ‘์† ์‹œ๋„๋Š” ์ง€์› ๋˜์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ - -*** - -## 10. JDK์™€ JRE - -### 1) JRE(JAVA Runtime Enviroment) - -* java ์‹คํ–‰์— ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ - -### 2) JDK(Java Development Kit) - -* JRE ์™ธ์— ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ๋””๋ฒ„๊ฑฐ ๋“ฑ์„ ํ•จ๊ป˜ ํฌํ•จํ•œ๋‹ค๋Š” ์  - -*** - -## 3) ์›น ํ™˜๊ฒฝ ๊ตฌ์ถ• - -* ํ†ฐ์บฃ(์›น ์„œ๋ฒ„ + Servlet ์ปจํ…Œ์ด๋„ˆ) : WAS -* IDE : ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ - ์ดํด๋ฆฝ์Šค : J2EE -* ์›น ๋ธŒ๋ผ์šฐ์ €(HTTP ์„œ๋น„์Šค) -* DBMS(ORACLE, MySQl ์„ ํƒ) -* DBMS(ORACLE, MYSQL ์„ ํƒ) -* Junit, lombok - -*** - -## ๊ทธ ์™ธ - -1. ๋‹ค์Œ HTML ์ž…๋ ฅ ํƒœ๊ทธ ์ค‘ \์™€ ๋™์ผํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€? **\