๋‚˜์˜ ์ด์•ผ๊ธฐ/ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€

ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ 2์ฃผ์ฐจ WIL

Unused 2025. 3. 27. 22:26
WIL: Weekly I Learned; ๋˜๋Š” What I Learned This Week


2์ฃผ์ฐจ์ž…๋‹ˆ๋‹ค. ์˜จ ์ง€ 3๊ฐœ์›”์€ ๋œ ๋“ฏํ•œ๋ฐ ํ˜„์‹ค์€ 2์ฃผ์ฐจ WIL์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2์ฃผ์ฐจ์— ์ €ํฌ๊ฐ€ ํƒํ—˜ํ•œ ๋‚ด์šฉ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ:

  • ์Šคํƒ
  • ํ
  • ์šฐ์„ ์ˆœ์œ„ ํ
  • ๋ฑ (double-ended queue)
  • ๋ฆฌ์ŠคํŠธ
  • ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”

์•Œ๊ณ ๋ฆฌ์ฆ˜:

  • ์ด๋ถ„ํƒ์ƒ‰
  • ๋ถ„ํ• ์ •๋ณต

๋งˆ์ง€๋ง‰์œผ๋กœ CS:APP ์ฑ…์—์„œ๋Š” ์ฑ•ํ„ฐ 1 (๊ฐœ์š”)์˜ ์ €์žฅ์žฅ์น˜ ๊ณ„์ธต๊ตฌ์กฐ(๋ ˆ์ง€์Šคํ„ฐ-์บ์‹œ-๋ฉ”๋ชจ๋ฆฌ-์Šคํ† ๋ฆฌ์ง€)์™€ OS์˜ ํ•˜๋“œ์›จ์–ด ๊ด€๋ฆฌ ๊ด€๋ จํ•œ ๋ถ€๋ถ„์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

์Šฌ์Šฌ 2์ฃผ์ฐจ์ฏค ๋˜๋‹ˆ ๊ณต๋ถ€์˜ ํŒจํ„ด์ด ์žกํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œํ—˜์„ ์น˜๋ฅธ ๋ชฉ์š”์ผ๋ถ€ํ„ฐ ํ† ์š”์ผ๊นŒ์ง€๋Š” ์ฐจ์ฃผ ๊ฐœ๋… ์œ„์ฃผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚œ์ด๋„ 'ํ•˜'๋‚˜ '์ค‘'์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ‘ผ ๋’ค, ์ผ์š”์ผ๋ถ€ํ„ฐ ์ˆ˜์š”์ผ๊นŒ์ง€ ๋ณธ๊ฒฉ์ ์ธ ๋ฌธ์ œ๋“ค์— ๋„์ „ํ•˜๋ฉฐ ํ‹€๋ฆฐ ๋ฌธ์ œ๋“ค์„ ๋ณต์Šตํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋งค์ฃผ ์ˆ˜์š”์ผ์—๋Š” '๋žœ๋ค ๋Ÿฐ์น˜'๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋žœ๋ค ๋Ÿฐ์น˜๋ž€ 4์ธ์˜ ๋žœ๋ค ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ™์ด ์™ธ์‹์„ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ๋‹ค ๊ฐ™์ด ์•„๊ตฌ์ฐœ์„ ๋จน์—ˆ๋„ค์š”. ์ฐธ๊ณ ๋กœ ์ด ๊ทผ๋ฐฉ์— ์žˆ๋Š” ์•„๊ตฌ์ฐœ์ง‘์€ ํ•œ๋‘ ๊ณณ ์ •๋„์ธ๋ฐ, ์–‘๋…์ด ๊ฝค๋‚˜ ๋งต์Šต๋‹ˆ๋‹ค. ์–ด์ง€๊ฐ„ํžˆ ๋งค์šด๋ง› ์ค‘๋…์ด ์•„๋‹ˆ๋ผ๋ฉด ์ˆœํ•œ๋ง›์„ ์ฃผ๋ฌธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ์‹œํ—˜์—๋Š” ๋ฐฑ์ค€ "์ˆซ์ž ์นด๋“œ", "ํ”„๋ฆฐํ„ฐ ํ", "๋ฌธ์ž์—ด ํญ๋ฐœ" ๋ฌธ์ œ๊ฐ€ ์ถœ์ œ๋˜์—ˆ๋Š”๋ฐ, 1๋ฒˆ๊ณผ 3๋ฒˆ์€ ํ’€์—ˆ์ง€๋งŒ 2๋ฒˆ์„ ๋ฏธ์ฒ˜ ๋๋‚ด์ง€ ๋ชปํ•œ ์ฑ„๋กœ ์ œ์ถœํ•œ ์ ์ด ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค. 

์ด "ํ”„๋ฆฐํ„ฐ ํ" ๋ฌธ์ œ๊ฐ€ ๊ณจ๋•Œ๋ฆฌ๋Š” ๊ฒŒ ์ž…๋ ฅ์€ ์ธ๋ฑ์Šค๋กœ (0, 1, 2, 3, 4, ...)๋กœ ๋ฐ›์œผ๋ฉด์„œ ์ถœ๋ ฅ์€ ๋˜ 1, 2, 3, ...๋ฒˆ์งธ ๊ฐ™์€ ์‹์œผ๋กœ ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ์— ๋™์ผํ•œ ์šฐ์„ ์ˆœ์œ„์˜ ๋ฌธ์„œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•  ์‹œ ์ด๋“ค ์ค‘ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ํ”„๋ฆฐํŠธ๋ฌผ์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น, ๋ฌธ์„œ ๊ฐœ์ˆ˜๋Š” 6๊ฐœ, [1,1,9,1,1,1]์˜ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ธ๋ฑ์Šค 0์˜ ๋ฌธ์„œ์˜ ์ถœ๋ ฅ ์ˆœ์„œ๋Š” "5"์ž…๋‹ˆ๋‹ค. ์™œ๋ƒ๊ตฌ์š”? ์ถœ๋ ฅ ์ˆœ์„œ๊ฐ€ 1 -> 1 -> 1 -> 1 -> 1 -> 9์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, 9 ์ง์ „์˜ ๋งˆ์ง€๋ง‰ 1์˜ ์ˆœ์„œ๋ฅผ ๋‚ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ชจ๋กœ ์‹ ๊ฒฝ์จ์•ผ ํ•  ์ง€์ ์ด ๋งŽ์•˜๋˜ ๋ฌธ์ œ์˜€๋„ค์š”. ์•„๋‹ˆ ๊ทธ๋ƒฅ ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋„ 30๋ถ„์€ ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

์›Œ๋‚™ ๋งŽ์€ ๊ฐœ๋…๋“ค์ด ํ•œ๊บผ๋ฒˆ์— ๋จธ๋ฆฌ์— ๋“ค์–ด์˜ค๋‹ˆ, ๋‹น๋ถ„๊ฐ„์€ ์—์„ธ์ด ํ˜•์‹๋ณด๋‹ค๋Š” ์ด ๊ธ€์ด๋‚˜ ์ด ๊ธ€์ฒ˜๋Ÿผ ๊ฐœ๋… ์ •๋ฆฌ ์œ„์ฃผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ํŽธ์ด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. 

๊ธ€๋กœ๋Š” ๋‹ค ๋‹ด์„ ์ˆ˜ ์—†์ง€๋งŒ ์—ฌ๋Ÿฌ๋ชจ๋กœ ๊ฐ์‚ฌํ•จ์„ ๋А๋ผ๊ฒŒ ํ•ด์ค€ ์ฃผ์˜€์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋‚จ์€ ์‹œ๊ฐ„์„ ๋”์šฑ ์†Œ์ค‘ํ•˜๊ฒŒ ์จ์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค.