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

๐Ÿ’ป Programming83

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ '์•Œ๊ณ ๋ฆฌ์ฆ˜' ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹จ๊ณ„์ ์ธ ์ ˆ์ฐจ์ด๋‹ค. ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋ฉด ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์ œ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์•Œ์•„๋‘ฌ์•ผ๊ฒ ์ง€? (๋งจ๋‚  ๊นŒ๋จน๋Š”๋‹ค)Brute Force๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๊ณ ๋ คํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ์ง๊ด€์ ์ด๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ๋กœ ์ œํ•œ์ด ์ ๊ฑฐ๋‚˜, ๋ฌธ์ œ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.ํŠน์ง•๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ : ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€.์‹œ๊ฐ„ ๋ณต์žก๋„: ๋ฌธ์ œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ O(n^2), O(n!)์™€ ๊ฐ™์€ ๋†’์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์‹œ๋„: ์ตœ์ ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.. 2025. 1. 16.
์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ '์ž๋ฃŒ ๊ตฌ์กฐ' ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ , ๋ฌธ์ œ์— ๋งž๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค...๋Š” ๋ง์€ ์ง„๋ถ€ํ•˜๊ณ  ์•ˆ ๊นŒ๋จน๊ฒŒ ์ ์–ด๋ผ๋„ ๋‘”๋‹ค. 1. ๋ฆฌ์ŠคํŠธ (List)๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž„.์‹œ๊ฐ„ ๋ณต์žก๋„: ์ธ๋ฑ์Šค ์ ‘๊ทผ O(1), ์‚ฝ์ž…/์‚ญ์ œ O(n) (์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ ์‹œ)์‚ฌ์šฉ ์‚ฌ๋ก€: ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ, ๋ฆฌ์ŠคํŠธ์˜ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ์œ ์šฉ# ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑarr = [1, 2, 3]# ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ ์ถ”๊ฐ€arr.append(4) # O(1)# ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์š”์†Œ ์ ‘๊ทผprint(arr[2]).. 2025. 1. 15.
[FastAPI] API ํ‚ค๋กœ ์ธ์ฆ ์ ์šฉํ•˜๊ธฐ | API KEY ์˜ค๋Š˜์€ FastAPI๋ฅผ ์‚ฌ์šฉํ•ด์„œ API๋ฅผ ์ œ๊ณตํ•  ๋•Œ API ํ‚ค๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ด์š”. API ํ‚ค๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด ๋ณผ๊ฒŒ์š” ~!API ํ‚ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?API ํ‚ค(API Key)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž์˜ˆ์š”. API ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์‚ฌ์šฉ๋ผ์š”:์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ: ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ์‚ฌ์šฉ ์ถ”์  ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง: ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค API ํ˜ธ์ถœ์„ ํ–ˆ๋Š”์ง€ ์ถ”์ ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง์š”์ฒญ ์ œํ•œ: ํŠน์ • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Œ FastAPI์—์„œ API ํ‚ค ์ ์šฉํ•˜๊ธฐ API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด ์ž‘์„ฑํ•˜๊ธฐfr.. 2024. 8. 6.
[python] ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์†์‰ฝ๊ฒŒ ์ฐพ๊ธฐ: os.path ๋Œ€์‹  pathlib ์‚ฌ์šฉํ•˜๊ธฐ Python์—์„œ ํ˜„์žฌ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„๋‚˜ ์ƒ์œ„ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š”๋ฐ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ๊ฐ€ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ๋งŽ์€ ๋ถ„๋“ค์ด(๊ณผ๊ฑฐ์˜ ๋‚˜๋„...) os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, pathlib ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ณ  ์ง๊ด€์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”! 1. os ๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๋จผ์ €, os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณผ๊ฒŒ์š”. import oscurrent_dir = os.path.dirname(os.path.abspath(__file__))print(current_dir) ์ด ๋ฐฉ๋ฒ•์€ __file__ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, os.p.. 2024. 7. 30.
[ํŠœํ† ๋ฆฌ์–ผ] ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CLIP & KoCLIP ๋ชจ๋ธ ์˜ˆ์ œ | ์ฝ”๋”ฉ ๋ชปํ•ด๋„ ๊ฐ€๋Šฅํ•ด! | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ AI ์˜ˆ์ œ | CLIP & ํ•œ๊ตญ์–ด CLIP ์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ๊ธฐ๋ณธ์ ์ธ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ AI ๋ชจ๋ธ์ธ, CLIP์„ ์‚ฌ์šฉํ•ด ๋ณด๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๊ฐ€์ ธ์™”์–ด์š”!์‚ฌ์‹ค ์š”์ฆ˜์€ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฐœ์ „ํ•ด์„œ ๊ต‰์žฅํžˆ ์†์‰ฝ๊ฒŒ AI ๋ชจ๋ธ์„ ๋‹ค๋ค„๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. CLIP ๊ณผ ๊ฐ™์€ ํŠธ๋žœ์Šคํฌ๋จธ ๊ธฐ๋ฐ˜์˜ ๋ชจ๋ธ๋„ ํ—ˆ๊น…ํŽ˜์ด์Šค API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ต‰์žฅํžˆ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ํŠนํžˆ ํ•™์Šตํ•˜์ง€ ์•Š๊ณ  pre-trained(์‚ฌ์ „ ํ•™์Šต๋œ) ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”๋”์šฑ ์‰ฝ๊ฒ ์ฃ ? *CLIP : Contrastive Language-Image Pretraining ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์ฝ”๋”ฉ์„ ํ•  ์ค„ ๋ชจ๋ฅด๋Š” ๋น„๊ฐœ๋ฐœ์ž๋„ ์†์‰ฝ๊ฒŒ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋งŒ๋“ค์–ด ์™”๋‹ต๋‹ˆ๋‹ค ~~ ๐Ÿค—์‚ฌ์‹ค ์ฝ”๋“œ๊ฐ€ ์งง์•„์„œ ๋ญ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€๋„ ์•„๋‹ˆ๊ธด ํ•ด์š” ใ…Žใ…ŽCLIP Model ๊ทธ๋ž˜๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ผ๋„ CLIP ๋ชจ๋ธ์ด ๋ฌด์—‡์ธ์ง€๋Š” .. 2024. 7. 28.
[Github] ๊นƒํ—™ ์„œ๋ธŒ๋ชจ๋“ˆ: ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ์˜ ํ•„์š”์„ฑ๊ณผ ๋ฐฉ๋ฒ• ์„œ๋ธŒ๋ชจ๋“ˆ์ด๋ž€? ์„œ๋ธŒ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด์— ๋‹ค๋ฅธ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋“ˆ z๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋Š”๋ฐ, ์ด ๋ชจ๋“ˆ์ด ํ”„๋กœ์ ํŠธ A์™€ B์— ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์–ด ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋ฉด ์ข‹์„๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค ์„œ๋ธŒ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ์–ด์š”. ์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋“ˆ z๋ฅผ ํ”Œ์  A์™€ B์— ๋ณต์‚ฌํ•ด๋‘”์ฑ„๋กœ ๊นƒํ—™์— ๊ด€๋ฆฌํ–ˆ๋Š”๋ฐ... ์ด๋ ‡๊ฒŒ ๊ด€๋ฆฌํ•˜๋‹ค๋ณด๋ฉด A์—์„œ z๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , B์—์„œ๋„ z๋ฅผ ์ˆ˜์ •ํ•˜๊ณ ... ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ด€๋ฆฌ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด ์ง€๋”๋ผ๊ตฌ์š” ใ…Žใ…Ž. ๋ฌผ๋ก  ์ฒ˜์Œ์—” ๋งˆ์ด๋„ˆํ•œ ์ˆ˜์ •์ด๋ผ ๋‚˜์ค‘์— ๋‹ค ์ •๋ฆฌํ•ด์•ผ์ง€~ ํ•˜์ง€๋งŒ ๋Š˜ ์‰ฝ์ง€ ์•Š์ฃ  ใ… ใ… . ๊ทธ๋ž˜์„œ! ์„œ๋ธŒ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต์ ์œผ.. 2024. 7. 24.
728x90