๐Ÿ’ป Computer Science/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ•ด์‹œ๋ผ๋Š” ๋‹จ์–ด๋Š” ์•”ํ˜ธํ™” ๊ด€๋ จ ์ •๋ณด๋ฅผ ์•Œ์•„๋ณผ ๋•Œ ์ฃผ๋กœ ๋“ค์—ˆ๋˜ ๋‹จ์–ด ๊ฐ™๋‹ค.์˜ค๋Š˜์€ ํ•ด์‹œ์— ๊ด€๋ จํ•œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.Java์—์„œ๋Š” HashTable ๊ณผ HashMap ๋‘˜๋‹ค ์žˆ๋Š”๋ฐ, ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๋‘˜์„ ๊ตฌ๋ถ„ ์ง“์ง€๋Š” ์•Š๊ณ , HashMap ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„ค๋ช…์ž„์„ ์•Œ๋ ค๋“œ๋ฆฌ๋Š” ๋ฐ”์ด๋‹ค. ๐Ÿ“Œ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€?ํ•ด์‹œ(Hash) ๋‹จ์–ด ์ž์ฒด๋Š” ์–ด๋–ค ๊ฐ’์„ ์ผ์ • ๊ธธ์ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๊ณ , ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๊ทธ ํ•ด์‹œ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ„๋‹จํ•˜๊ฒŒ key-value ๊ตฌ์กฐ๋กœ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค๋Œ€์ฒด ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ๋ญ๊ธธ๋ž˜ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ?์ž ์šฐ๋ฆฌ๊ฐ€ ์นœ๊ตฌ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์น˜์ž.๊ฒ€์ƒ‰์ฐฝ์— ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์น˜๋ฉด ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค..
๐Ÿ“Œ  ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์™œ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋‚˜ 1. ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์ž๋ฃŒ ๊ตฌ์กฐ = Data + Structure = ์ž๋ฃŒ๋“ค์˜ ์ง‘ํ•ฉ์ฆ‰, ์ž๋ฃŒ๊ฐ€ ๋ญ‰์ณ์žˆ๋Š” ์ƒ๊น€์ƒˆ๋ฅผ ๋งํ•œ๋‹ค.์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ด€๊ณ„๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ •์˜๋œ ์ผ์ •ํ•œ ๊ทœ์น™์— ์˜ํ•ด ๋‚˜์—ด๋œ๋‹ค.์ž๋ฃŒ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋ฃŒ๋ฅผ ์กฐ์ง์ , ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ํ‘œํ˜„ํ•œ๊ฑฐ๋‹ค.์ด๋Ÿฐ ์‹์œผ๋กœ ๋”ฑ๋”ฑ ๊ตฌ๋ถ„์ง€์–ด์„œ ์˜ˆ์˜๊ฒŒ ๋†“์€ ๊ฑฐ๋ž€ ๋ง์ด๋‹ค. 2. ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๋ชฉ์ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ชฉ์ ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€์ด๋‹ค.1. ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ ‘๊ทผ2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์˜ ์ตœ์ ํ™”3. ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ์ง€์›๊ฐ๊ฐ ๋‹ค๋ฅธ ์ฑ…์žฅ์ด ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.1๋ฒˆ ์ฑ…์žฅ์€ ์ฑ…์ด ๋ฌด์ž‘์œ„๋กœ ๊ฝ‚ํ˜€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ์›ํ•˜๋Š” ์ฑ…์„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.2๋ฒˆ ์ฑ…์žฅ์€ ์นธ๋งˆ๋‹ค ๊ฐ™์€ ์ƒ‰์ƒ์˜ ์ฑ…์„ ์ง„์—ดํ–ˆ๋‹ค. ..
์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ์„ฑ ์ฒดํฌ์—์„œ ์“ฐ์ด๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„, ๊ทธ๋ฆฌ๊ณ  Big-O ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ณ ์ž ํ•œ๋‹ค.์ฝ”ํ…Œ์—์„œ ์–ด๋Š์ •๋„ ๊ตฌํ˜„์„ ํ•˜๋‹ค๋ณด๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ˜น์€ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋ฅผ ๊ฒช๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.๊ทธ ๋•Œ ์–ด๋–ค ๊ณณ์„ ์ตœ์ ํ™”ํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ๊ณ ์ž ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ๋กœ ํ•œ๋‹ค.์•Œ ๋•Œ์™€ ๋ชจ๋ฅผ ๋•Œ์˜ ์ฝ”๋“œ ๊ตฌํ˜„์€ ์ •๋ง ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๋‹ค. ๐Ÿ“Œ ๋ณต์žก๋„ & ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ• ๋ณต์žก๋„, ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ๊ฐ€ ๐Ÿง์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณ„์‚ฐ ๋ณต์žก๋„(Computational Complexity) ํ˜น์€ ๋ณต์žก๋„(Complexity)๋ผ๋Š” ๊ฒƒ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž์›์˜ ์–‘์„ ๋œปํ•œ๋‹ค.์ด๋Š” ๊ณณ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ณ , ๋ณต์žก๋„๊ฐ€ ์ž‘์œผ๋ฉด ์ž‘์„ ์ˆ˜๋ก ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.์—ฌ๋Ÿฌ ๋ณต์žก๋„๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€ํ‘œ์ ์ธ..
1. ํ (Queue)ํ๋Š” ์ด๋ ‡๊ฒŒ ์„ ์ž…์„ ์ถœ(FIFO) ๊ตฌ์กฐ์ด๋‹ค.์—ฐ์‚ฐ ๊ณผ์ •์—๋Š”- enqueue : ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž‘์—…- dequeue : ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—…- front : ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๋ถ€๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜- rear : ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๋ถ€๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜์ด๋Ÿฐ ๊ฐœ๋…๋“ค์ด ๋“ฑ์žฅ ํ•œ๋‹ค. 1. ์‰ฝ๊ฒŒ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์˜ˆ์ œ๋ฅผ ์‚ดํŽด ๋ณด๊ฒ ๋‹ค.์šฐ๋ฆฌ๊ฐ€ ์ค„ ์„œ์žˆ๋Š” ๋Œ€๊ธฐ์—ด์„ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.ํ‹ฐ์ผ“ ๋งคํ‘œ์†Œ์— ์ด๋ ‡๊ฒŒ ์ค„์„ ์„œ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.์ค„์„ ์ œ์ผ ๋จผ์ € ์„  A๊ฐ€ ๋จผ์ € ํ‘œ๋ฅผ ์‚ฌ๊ณ , ์ œ์ผ ๋‚˜์ค‘์— ์„  E๊นŒ์ง€ ๋ชจ๋‘ ์ˆœ์„œ๋Œ€๋กœ ํ‘œ๋ฅผ ์‚ด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.์ด๋ ‡๊ฒŒ ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ F๊ฐ€ ๋“ฑ์žฅํ•ด์„œ ์ค„์„ ์„ ๋‹ค.๊ทธ๋Ÿผ ์ด๋•Œ rear๋Š” ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋งจ ๋’ค์˜ F๋กœ ๋œ๋‹ค.์ด F๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ enqueue ๋ผ๊ณ  ํ•˜๊ณ , F ์ถ”๊ฐ€ํ•  ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”..
์žฌ๊ท€ ํ•จ์ˆ˜ ์ด์šฉํ•ด์„œ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ def solution(x): answer = 0 if x =2: fn = fn_1 + fn_2 fn_2 = fn_1 fn_1 = fn x -= 1 return fn ๋ฐ˜๋ณต๋ฌธ ๋ฒ„์ „์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ  ํ–ˆ๋‹ค ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ์ง€๋งŒ ์ƒ๊ฐ์„ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค
์ด์ง„ํƒ์ƒ‰์€ ๊ผญ ํฌ๊ธฐ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค๋Š” ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•˜๋Š” ๊ธฐ๋ฒ• def solution(L, x): start = 0 upper = len(L) -1 answer = -1 while start
ํŠน์ • ์›์†Œ๋ฅผ ํฌํ•จํ•œ ์ธ๋ฑ์Šค ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ, ๋งŒ์•ฝ์— ์—†์„ ์‹œ์—” ๋ฆฌํ„ด๊ฐ’์— -1์„ ๋„ฃ์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. def solution(L, x): answer = [] i = 0 while i < len(L): if L[i] == x: answer.append(i) i += 1 if answer == [] : answer = [-1] return answer ์ด๊ฑด ๋‚˜์ค‘์— ์‹ค๋ฌด์—์„œ๋„ ์ ์ ํžˆ ์จ๋จน์„ ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™์•„์„œ ๊ธฐ๋ก ํƒ•ํƒ•! ์ข€๋” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์งœ๋Š” ์—ฐ์Šต์„ ํ•ด์•ผํ• ๊ฒƒ ๊ฐ™๋‹ค
ํ‚จ์ง€ (Kinzie)
'๐Ÿ’ป Computer Science/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก