๋ชฉ๋ก๐ฉ๐ป ์ปดํจํฐ ๊ตฌ์กฐ (110)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
=> ๊ฐ๋ฐ์ ํ์ ์๊ณ ๋ฆฌ์ฆ #2. ์ ํํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋? ๐ซง ์ ํํ์ : ๋ฐฐ์ด/๋ฆฌ์คํธ์์ ์ฃผ์ด์ง ์์๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉ๋จ : ์ผ๋ ฌ๋ก ๋ ์๋ฃ๋ฅผ ์ฐจ๋ก๋๋ก ํ์ : ์ฐพ๊ณ ์ํ๋ ์์๋ฅผ ์ฐพ์ ๋ ๊น์ง or ๋ชจ๋ ์์์ ์ํ๊ฐ ๋๋ ๋ ๊น์ง ์ง 1) ๋ฐฐ์ด ์ ์ฒด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ฐจ์ ์ํ 2) ๊ฐ ๋จ๊ณ๋ง๋ค ์ฐพ๋ ์์๊ฐ ์๋์ง ํ์ธ, ๋ง์ฝ ์ฐพ๊ฒ ๋๋ค๋ฉด ์ํ ๋ฉ์ถ๊ธฐ 3) ๋ชป ์ฐพ์ ๊ฒฝ์ฐ, ๋ค์ ์์๋ก ๋์ด๊ฐ๋ฉฐ ๋ฐ๋ณตํจ const nums = [10, 5, 2, 20, 7, 12, 33, 52] function linearSearch(arr: number[], val:number): boolean { for (let index = 0; index < arr.length; index ++) { const element =..
=> ๊ฐ๋ฐ์ ํ์ ์๊ณ ๋ฆฌ์ฆ #1. ์ฌ๊ท ์ฌ์ฉ ๋ฐฉ๋ฒ (Recursion) ๐ซง ์ฌ๊ท ์ฌ์ฉ ๋ฐฉ๋ฒ (Recursion) : ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์ ๐พ 10์์ countDown ํ๊ธฐ : ์ํ ํ ๋๋ง๋ค -1 ํ๊ธฐ : 0๋ณด๋ค ์์ผ๋ฉด ์ค์งํ๊ธฐ function cntDown(n: number): void { // 1. Base case (stop contidtion) if (n = 1; i--) { n = n * i; } return n; } // ์ฌ๊ทํจ์ function factorial(n: number): number { // 1. Base case (stop contidtion) if (n === 0 || n ===1) { return 1; } // 2. Resursive case return n * fa..
=> ์ฝ๋ฉํ ์คํธ ํ์ ํ ํฌ๋, ํฌ ํฌ์ธํฐ ๊ธฐ๋ฒ ๐ซง ํฌ ํฌ์ธํฐ ํ ํฌ๋ : 1์ฐจ์ ๋ฐฐ์ด์์ ๊ฐ์ ๋ค๋ฅธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ 2๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉํ๊ฐ ๊ตฌํ๋ค : ์์ ํ์ O(n) ์๋ฃจ์ -> O(n) ์ผ๋ก ์ฑ๋ฅ ํฅ์ ๊ฐ๋ฅ : ์ฐ์๋ ๊ตฌ๊ฐ์ ์์๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํ๊ฑฐ๋, ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌํ ๋ ํฌํฌ์ธํฐ ์ฌ์ฉ ๐พ ๋ฐฐ์ด์์, ์์๋ค์ ํฉ์ด x์ธ ์ฐ์ ๋ถ๋ถ ๋ฐฐ์ด์ ๊ฐ์๋ฅผ ๊ตฌํ๋ผ arr = [1, 3, 6, 5, 2, 7, 9], x = 9 result : {3, 6}, {2, 7}, {9} // ์์ ํ์ O(n^2) function cntSubArrSumOfX(arr, x) { let cnt = 0; for (let i = 0; i < arr.length; i ++) { let sum = 0; for ..
=> ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ ์ฝ๊ฒ ์ดํดํ๊ธฐ [10๋ถ ์ ๋ฆฌ] ๐ซง ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) : ์ฐ์๋ ๋ ธ๋(Node) ์ ์ฐ๊ฒฐ์ฒด ๐พ ๋ ธ๋(Node) : ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์ฌ์ฉ๋๋ ํ๋์ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ : ๋ฐ์ดํฐ & ๋งํฌ, 2๊ฐ์ง์ ํ๋๋ฅผ ๋ด๊ณ ์๋ ๊ตฌ์กฐ ๐พ data : ๋ ธ๋๊ฐ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ/๊ฐ ๐พ next : ๋งํฌ/ํฌ์ธํฐ ์ญํ , ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅ (์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, prev ํฌ์ธํฐ (์ด์ ๋ ธ๋์ ์ฃผ์) ์ถ๊ฐ) ๐ซง ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) vs ๋ฐฐ์ด ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) ๋ฐฐ์ด random access ๋ถ๊ฐ๋ฅ random access ๊ฐ๋ฅ ๋ฆฌ์คํธ์ n๋ฒ์งธ ๋ ธ๋ ๋ฐฉ๋ฌธ์ O(n) ์๊ฐ ์์ ๋ฐฐ์ด์ n๋ฒ์งธ ์์ ๋ฐฉ๋ฌธ์ O(1) ์๊ฐ์ผ๋ก ๊ฐ๋ฅ ๋ฐฐ์ด๋ณด๋ค ๋นจ๋ผ์ง ์ ์๋ ๋ ธ..
=> ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ ์ฝ๊ฒ ์ดํดํ๊ธฐ [10๋ถ ์ ๋ฆฌ] ๐ซง ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ : ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ : ์๊ฐ / ๊ณต๊ฐ ๋ณต์ก๋ ์์ธก์ ์ฌ์ฉ : N ๊ฐ์ ์ฆ๊ฐ์ ๋ค๋ฅธ ์ฒ๋ฆฌ ์๊ฐ ๋๋ ๊ณต๊ฐ ๊ณ์ฐ : ์์์ ๊ณ์ ์ ๊ฑฐํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ๋จ์ํ : ์ธํ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์ฐ์ฐ ์ฒ๋ฆฌ์๊ฐ์ ์ฆ๊ฐ์จ ๐ซง ์ฃผ์ ์๊ฐ๋ณต์ก๋ O(1) - Constant Time : ์ธํ์ ํฌ๊ธฐ์ ์๊ด์์ด ํญ์ ์ผ์ ํ ์๊ฐ ์์ O(log n) - Logarithmic : ๋ก๊ทธ์๊ฐ, O(1) ๋ค์์ผ๋ก ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋ O(n) - Linear Time : ์ ํ ์๊ฐ, ์ธํ์ ์ฆ๊ฐ ์ ๊ฐ์ ๋น์จ๋ก ์ฆ๊ฐ O(N^2) - Quadratic : 2์ฐจ ์๊ฐ, ์ธํ์ ์ฆ๊ฐ ์ n์ ์ ๊ณฑ ๋น์จ๋ก ์ฆ๊ฐ O(n!) - Factoria..
๐ฉ๐ป Oh My BASH! https://ohmybash.nntoan.com/ โ ์ค์น ๋ ์ ์๋ ๋ช ๋ น์ด ํจํค์ง ์ค์น.. sudo yum install zsh sudo yum install git bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
๐ Dockerfile : ์ปจํ ์ด๋๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค์ด์ผ ํ๋์ง์ ๋ํ ์ค๋ช ์ ๐ ํ์ผ ๋ช ๋ น์ด FROM : ์ด๋ค ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ COPY : ๋ณต๋ถํ ๊ฒฝ๋ก ๋ง๋ค๊ธฐ WORKDIR : ์ปจํ ์ด๋์์ ๋ช ๋ น์ด๊ฐ ์คํ๋๋ ๋๋ ํ ๋ฆฌ RUN : ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ ํ์ผ ๋ง๋ค ๋ ์ฌ์ฉ CMD : ์ปจํ ์ด๋๊ฐ ์คํ๋ ํ์ ์คํํ ๋ช ๋ น์ด, ์ด๋ฏธ์ง ๋ง๋ค ๋ ์คํ ๐ Dockerfile ๋ก container ์คํํ๊ธฐ ๐ Dockerfile ์์ฑํ๊ธฐ FROM python:3.8-alpine COPY . /app WORKDIR /app RUN pip3 install flask RUN chmod +x /app/app.py CMD ["python3", "app.py"] ๐ container ๋น๋ํ๊ธฐ docker build -t flas..
๐ Flask ๋ฅผ ์ํ ์ธํ python3 download ํ๊ธฐ ๐ ํ๋ก์ ํธ ํ ํด๋ ๋ง๋ค๊ธฐ ๐ ๊ฐ์ํ๊ฒฝ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ๐ flask ์ค์นํ๊ธฐ pip install flask ๐ ํจํค์ง ๋ชฉ๋ก ํ์ธ pip freeze ๐ Flask app ์ด๊ธฐ from flask import Flask app = Flask(__name__) @app.route("/") def hello_world() : return "Hello world!!!!" if __name__ == "__main__" : app.run(host = "0.0.0.0", port = 5000)