๐Ÿค[์•Œ๊ณ ๋ฆฌ์ฆ˜] SW Expert ํŒŒ์ด์ฌ SW๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ - LIST1 ๊ฐ•์˜

์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜
: ์œ ํ•œํ•œ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ๋‚˜ ๋ฐฉ๋ฒ•

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œํ˜„๋ฒ•

  • ์Šˆ๋„์ฝ”๋“œ
  • ์ˆœ์„œ๋„

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ๋ถ„์„

  1. ์ •ํ™•์„ฑ
    ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€
  2. ์ž‘์—…๋Ÿ‰
    ์–ผ๋งˆ๋‚˜ ์ ์€ ์—ฐ์‚ฐ์œผ๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋‚ด๋Š”๊ฐ€
  3. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
    ์–ผ๋งˆ๋‚˜ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€
  4. ๋‹จ์ˆœ์„ฑ
    ์–ผ๋งˆ๋‚˜ ๋‹จ์ˆœํ•œ๊ฐ€
  5. ์ตœ์ ์„ฑ
    ๋”์ด์ƒ ๊ฐœ์„ ํ•  ์—ฌ์ง€ ์—†์ด ์ตœ์ ํ™”๋˜์—ˆ๋Š”๊ฐ€

๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
-> ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ๋ถ„์„์˜ ๊ธฐ์ค€์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘์—…๋Ÿ‰์„ ๋น„๊ต
ex) 1~100๊นŒ์ง€ ํ•ฉ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ
1. (1+2+....+100) = 99๋ฒˆ ์—ฐ์‚ฐ
2. 100*(1+100)/2 = 3๋ฒˆ ์—ฐ์‚ฐ
๋”ํ•˜๋ ค๋Š” ๋ฒ”์œ„๊ฐ€ ํด์ˆ˜๋ก ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ปค์ง

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘์—…๋Ÿ‰ ๋ถ„์„ ๋ฐฉ๋ฒ•

  1. ์‹ค์ œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •
  2. ์‹คํ–‰๋˜๋Š” ๋ช…๋ น๋ฌธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐ

1๋ฒˆ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 2๋ฒˆ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.


์•Œ๊ณ ๋ฆฌ์ฆ˜ 1 ์‹œ๊ฐ„๋ณต์žก๋„ = 2n+1
์•Œ๊ณ ๋ฆฌ์ฆ˜ 2 ์‹œ๊ฐ„๋ณต์žก๋„ = 3

์‹œ๊ฐ„๋ณต์žก๋„ ํ‘œํ˜„ ๋ฐฉ๋ฒ• - ๋น…-์˜ค(O) ํ‘œ๊ธฐ๋ฒ•

: ์‹œ๊ฐ„๋ณต์žก๋„ ํ•จ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ๋ ฅ์„ ์ฃผ๋Š” n์— ๋Œ€ํ•œ ํ•ญ๋งŒ์„ ํ‘œ์‹œ
๊ณ„์ˆ˜๋Š” ์ƒ๋žตํ•˜์—ฌ ํ‘œ์‹œ

O(2n+1) 
= O(2n) : ์ตœ๊ณ ์ฐจํ•ญ 2n๋งŒ ์„ ํƒ
= O(n) : ๊ณ„์ˆ˜ ์ œ๊ฑฐ

O(2n^2 +10n+100) = O(n^2)
O(4)=O(1)


์š”์†Œ ์ˆ˜์˜ ์ œ๊ณฑ์ˆ˜๋กœ ํ‘œํ˜„๋˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ ์—ฐ์‚ฐ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ N^2์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€์‹  logN์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.
์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ !


List

python ์†Œ๊ฐœ

  1. ๋ฏธ๋ฆฌ ๊ธฐ๊ณ„์–ด๋กœ ์ปดํŒŒ์ผํ•ด๋‘๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰์‹œ๋งˆ๋‹ค ์†Œ์Šค๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์ด๋ฏ€๋กœ ๋Š๋ฆฌ์ง€๋งŒ ํ”Œ๋žซํผ์— ์ƒ๊ด€์—†์ด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด
  3. IoT๋ถ„์•ผ์˜ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด, ๋น…๋ฐ์ดํ„ฐ์˜ ์ž๋ฃŒ๋ถ„์„๋“ฑ์—์„œ ํŒŒ์ด์ฌ ๊ด€์‹ฌ ๋†’์•„์ง

์˜ˆ์ „์—๋Š” ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์ด ์ข‹์ง€ ๋ชปํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์†๋„๊ฐ€ ํฌ๊ฒŒ ์ฐจ์ด๊ฐ€ ๋‚ฌ์Œ. ๋”ฐ๋ผ์„œ ์‹คํ–‰์†๋„๊ฐ€ ๋Š๋ฆฐ ํŒŒ์ด์ฌ ์ฃผ๋ชฉ ๋ชป๋ฐ›๋‹ค๊ฐ€
ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ ๊ฐœ์„ ์œผ๋กœ ์‹คํ–‰์†๋„์˜ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š๊ฒŒ๋˜๋ฉด์„œ ๊ฐœ๋ฐœ์‹œ๊ฐ„๋‹จ์ถ•์— ๊ด€์‹ฌ์ด ์ง‘์ค‘๋˜๋ฉด์„œ ํŒŒ์ด์ฌ ์ฃผ๋ชฉ๋ฐ›๊ธฐ ์‹œ์ž‘

๋ณ€์ˆ˜

  1. ํŒŒ์ด์ฌ์—์„œ ๋ชจ๋“  ์ž๋ฃŒ๋Š” ๊ฐ์ฒด๋กœ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋กœ ์ฒ˜๋ฆฌ.
    Java๋‚˜ C์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธํ˜• ํƒ€์ž… ๋ณ€์ˆ˜๋„ ํŒŒ์ด์ฌ์—๋Š” ๊ฐ์ฒด
  2. ๋ณ€์ˆ˜์˜ ์„ ์–ธ์€ ๋”ฐ๋กœ ์—†์Œ
    ๋ณ€์ˆ˜๊ฐ’์„ ์ดˆ๊ธฐํ™” ์‹œ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ
    ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.
a=3
a="hello"

๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐํ˜• ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋กœ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.
๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ณ ์ •๋˜์–ด์žˆ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ๋ณ€์ˆ˜ ํƒ€์ž…์ด ๊ฒฐ์ •๋จ.

์ž๋ฃŒํ˜•

ํŒŒ์ด์ฌ์˜ ๋ณ€์ˆ˜์—๋Š” ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ ๋ชจ๋“ ๊ฒƒ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

  • int
    ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ˆ˜ํฌ๊ธฐ์— ์ œํ•œ์ด ์—†๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ—ˆ์šฉ๊ฐ€๋Šฅํ•œ ๋ฌดํ•œ๋Œ€์˜ ์ •์ˆ˜๊นŒ์ง€๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒ๊ตฌ์กฐ ์ง€์›

  1. ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ
  • tuple
    ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ. ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ํ—ˆ์šฉ
    ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ.
    ํŒŒ์ด์ฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ,๋กœ ๋‚˜์—ดํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠœํ”Œ๋กœ ์ธ์‹. ์ด ๊ณผ์ •์„ packing์ด๋ผ๊ณ  ํ•œ๋‹ค.
    ํŠœํ”Œ๋กœ ๋ฌถ์—ฌ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ฑ๊ฐœ๋กœ ๊บผ๋‚ด๋Š” ์ž‘์—…์„ unpacking
  • list
    ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ. ์ค‘๋ณต ๋ฐ์ดํ„ฐ ํ—ˆ์šฉ
    ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ
    ํŠœํ”Œ๊ณผ ๋ฆฌ์ŠคํŠธ๋Š” ํก์‚ฌํ•˜์ง€๋งŒ ์ฐจ์ด๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์—ฌ๋ถ€
    ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ํŠœํ”Œ์ด ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ํŠœํ”Œ ์‚ฌ์šฉ
  • dictionary
    ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑ.
    ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค์˜ ์ค‘๋ณต์€ ํ—ˆ์šฉ์•ˆ๋จ, ๊ฐ’์˜ ์ค‘๋ณต์€ ์ค‘๋ณต ํ—ˆ์šฉ
    ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.
  • set
    ์ˆœ์„œ ์—†์Œ. ๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
    ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ธ๋ฑ์‹ฑ, ์Šฌ๋ผ์ด์‹ฑ์€ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€๋Šฅ.

dictionary์˜ ํ‚ค์™€ set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋‚ด๋ถ€์ ์œผ๋กœ ์ค‘๋ณต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ํŒจ์‹ฑ ๊ธฐ๋ฒ•์ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ํ‚ค์™€ set์€ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

List ์†Œ๊ฐœ

  • ๋ฐฐ์—ด(List)
    : ๊ฐ™์€ ํƒ€์ž… ๋ณ€์ˆ˜๋“ค์„ ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ์—ด๊ฑฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    • ํŒŒ์ด์ฌ์˜ list๋Š” C๋‚˜ ์ž๋ฐ”์˜ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
    • ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

List ์‚ฌ์šฉ๋ฐฉ๋ฒ•

ํŒŒ์ด์ฌ์˜ ๋ณ€์ˆ˜

  • ๋ณ„๋„์˜ ์„ ์–ธ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฉฐ ๋ณ€์ˆ˜์— ์ฒ˜์Œ ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์ƒ์„ฑ
  • ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์ „์—, ๋ณ€์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘์–ด์•ผ ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ๊ณต๋ฐฑ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ œ๊ณต
# ๋ฐฉ๋ฒ• 1
num=[]
#๋ฐฉ๋ฒ• 2
arr=list()

๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์ฐจ์ด์ 


๋ฐฐ์—ด๋ณด๋‹ค ๋ฆฌ์ŠคํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌ

2์ฐจ์› ๋ฆฌ์ŠคํŠธ: ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์›์†Œ๋กœ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐ

arr=[[1,2],[3,4],[5,6]]

๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ์ง‘ํ•ฉ์œผ๋กœ ์‹œํ€€์Šค(Sequence)์ž๋ฃŒํ˜• ์ค‘ ํ•˜๋‚˜.

์‹œํ€€์Šค ์ž๋ฃŒํ˜•

  • ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ, ์ธ๋ฑ์‹ฑ๊ณผ ์Šฌ๋ผ์ด์‹ฑ์˜ ์—ฐ์‚ฐ ๋ชจ๋‘ ์ ์šฉ๊ฐ€๋Šฅ
    • ์ธ๋ฑ์‹ฑ
      : ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์—์„œ ํ•˜๋‚˜์˜ ์š”์†Œ๋ฅผ ์ธ๋ฑ์Šค ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•˜์—ฌ ์ฐธ์กฐํ•˜๋Š”๊ฒƒ
    arr=[4,5,6,7,8,9]
    arr[0] #4
    arr[-1] #9
    ๋ฆฌ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
    • ์Šฌ๋ผ์ด์‹ฑ
      : ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ์›ํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•˜๋Š” ์—ฐ์‚ฐ
    arr=[4,5,6,7,8,9]
    arr[1:3] #[5,6]
    arr[:3] #[4,5,6]
    arr[1:] #[5,6,7,8,9]
    arr[:] #[4,5,6,7,8,9]
  • ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์™€ ์—ฐ์‚ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ

๋ฆฌ์ŠคํŠธ ํ•จ์ถ•(List Comprehension)

์ˆ˜ํ•™์—์„œ ์ง‘ํ•ฉ์„ ์ •์˜ํ•˜๋Š” ํ‘œํ˜„์‹๊ณผ ์œ ์‚ฌ
ex) 10๋ณด๋‹ค ์ž‘์€ ์ง์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์„ ์›์†Œ๋กœ ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ

mylist=[2,3,4,5,6]
newlist=[i for i in mylist if i%2==0]

๋ฆฌ์ŠคํŠธ ํ•จ์ถ•์—์„œ if๋ฌธ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ณ  for๋ฌธ๊ณผ if๋ฌธ์Œ์€ ์ถ”๊ฐ€์ ์œผ๋กœ ๋” ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.


Exhaustive Search

์™„์ „ ๊ฒ€์ƒ‰ ์†Œ๊ฐœ

์™„์ „๊ฒ€์ƒ‰(Exhaustive Search)
: ๋ฌธ์ œ์˜ ํ•ด๋ฒ•์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜์—ดํ•ด๋ณด๊ณ  ํ™•์ธํ•˜๋Š” ๊ธฐ๋ฒ•

  • Brute-force ํ˜น์€ Generate-and-Test ๊ธฐ๋ฒ•์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธ ํ•œ ํ›„, ์ตœ์ข… ํ•ด๋ฒ•์„ ๋„์ถœํ•จ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์„ ๋•Œ ์œ ์šฉํ•จ
  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ, ํ•ด๋‹ต์„ ์ฐพ์•„๋‚ด์ง€ ๋ชปํ•  ํ™•๋ฅ ์ด ์ ์Œ
  • ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ, ์šฐ์„  ์™„์ „ ๊ฒ€์ƒ‰์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ํ•ด๋‹ต์„ ๋„์ถœํ•œ ํ›„, ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹ต์„ ํ™•์ธํ•˜๋Š”๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

์ˆœ์—ด

์ˆœ์—ด(Permutation)
: ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ๋“ค ์ค‘ ๋ช‡๊ฐœ๋ฅผ ๋ฝ‘์•„์„œ ํ•œ์ค„๋กœ ๋‚˜์—ดํ•˜๋Š”๊ฒƒ

  • ์„œ๋กœ๋‹ค๋ฅธ n๊ฐœ ์ค‘ r๊ฐœ๋ฅผ ํƒํ•˜๋Š” ์ˆœ์—ด : nPr
  • nPr= n*(n-1)*(n-2)*....*(n-r+1)
  • nPn=n!
  • n!=n*(n-1)*(n-2)*....*2*1

Greedy Algorithm

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)
: ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ทผ์‹œ์•ˆ์ ์ธ ๋ฐฉ๋ฒ•

  • ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„๋‹ฌ
  • ๊ฐ ์„ ํƒ์˜ ์‹œ์ ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฐ์ •์€ ์ง€์—ญ์ ์œผ๋กœ๋Š” ์ตœ์ ์ด์ง€๋งŒ, ๊ทธ๊ฒƒ๋“ค์„ ๊ณ„์† ์ˆ˜์ง‘ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์—ฌ, ๊ทธ๊ฒƒ์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†์Œ
  • ์ผ๋ฐ˜์ ์œผ๋กœ, ๋จธ๋ฆฌ์†์— ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฒ€์ฆ์—†์ด ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๋ฉด Greedy ์ ‘๊ทผ์ด ๋จ

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰๊ณผ์ •

  1. ํ•ด ์„ ํƒ
    ํ˜„์žฌ ์ƒํƒœ์—์„œ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ์ตœ์  ํ•ด๋ฅผ ๊ตฌํ•œ ๋’ค, ์ด๋ฅผ ๋ถ€๋ถ„ ํ•ด ์ง‘ํ•ฉ(Solution Set)์— ์ถ”๊ฐ€ํ•จ
  2. ์‹คํ–‰๊ฐ€๋Šฅ์„ฑ ๊ฒ€์‚ฌ
    ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ ํ•ด ์ง‘ํ•ฉ์ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํ™•์ธ.
    ๊ณง, ๋ฌธ์ œ์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•จ
  3. ํ•ด ๊ฒ€์‚ฌ
    ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ํ•ด ์ง‘ํ•ฉ์ด ๋ฌธ์ œ์˜ ํ•ด๊ฐ€ ๋˜๋Š”์ง€๋ฅผ ํ™•์ธ.
    ์•„์ง ์ „์ฒด ๋ฌธ์ œ์˜ ํ•ด๊ฐ€ ์™„์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ํ•ด ์„ ํƒ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•จ.

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ ์ธ ์ ‘๊ทผ์€ ํ•ด๋‹ต์„ ์ฐพ์•„๋‚ด์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.


Sort

์ •๋ ฌ ๊ฐœ์š”

์ •๋ ฌ(Sort)์ด๋ž€
: 2๊ฐœ ์ด์ƒ์˜ ์ž๋ฃŒ๋ฅผ ํŠน์ • ๊ธฐ์ค€์— ์˜ํ•ด ์ž‘์€๊ฐ’๋ถ€ํ„ฐ ํฐ ๊ฐ’(์˜ค๋ฆ„์ฐจ์ˆœ : ascending), ํ˜น์€ ๊ทธ ๋ฐ˜๋Œ€์˜ ์ˆœ์„œ๋Œ€๋กœ(๋‚ด๋ฆผ์ฐจ์ˆœ : descending) ์žฌ๋ฐฐ์—ดํ•˜๋Š”๊ฒƒ

ํ‚ค : ์ž๋ฃŒ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ํŠน์ • ๊ฐ’
ex) ์„œ๋ฅ˜๋ฅผ ๋ฒˆํ˜ธ๋Œ€๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒฝ์šฐ : ์„œ๋ฅ˜๋ฒˆํ˜ธ๊ฐ€ ํ‚ค

๋Œ€ํ‘œ์ ์ธ ์ •๋ ฌ ๋ฐฉ์‹์˜ ์ข…๋ฅ˜

  • ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble sort)
  • ์นด์šดํŒ… ์ •๋ ฌ (Counting sort)
  • ์„ ํƒ ์ •๋ ฌ (Selection sort)
  • ํ€ต ์ •๋ ฌ (Quick sort)
  • ์‚ฝ์ž… ์ •๋ ฌ (Insertion sort)
  • ๋ณ‘ํ•ฉ ์ •๋ ฌ (Merge sort)

๋ฒ„๋ธ” ์ •๋ ฌ

Bubble Sort
: ์ธ์ ‘ํ•œ ๋‘ ๊ฐœ์˜ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์ž๋ฆฌ๋ฅผ ๊ณ„์† ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹

์ •๋ ฌ๊ณผ์ •

  1. ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ์›์†Œ๋ผ๋ฆฌ ๊ณ„์† ์ž๋ฆฌ๋ฅผ ๊ตํ™˜ํ•˜๋ฉด์„œ ๋งจ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๊นŒ์ง€ ์ด๋™
  2. ํ•œ ๋‹จ๊ณ„๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ€์žฅ ํฐ ์›์†Œ ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๊ฐ€ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๋กœ ์ •๋ ฌ๋จ
  3. ๊ตํ™˜ํ•˜๋ฉฐ ์ž๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋Š” ๋ชจ์Šต์ด ๋ฌผ ์œ„์— ์˜ฌ๋ผ์˜ค๋Š” ๊ฑฐํ’ˆ๋ชจ์–‘ ๊ฐ™์•„์„œ ๋ฒ„๋ธ”์ •๋ ฌ

๋ฒ„๋ธ”์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ = O(n^2)
์•ˆ์ชฝ ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฒ”์œ„๊ฐ€ ๋ฐ”๊นฅ์ชฝ ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฒ”์œ„์— ์˜ํ•ด ์ œ์–ด๋˜๋Š”๊ฒƒ ์œ ์˜

์นด์šดํŒ… ์ •๋ ฌ

Counting Sort
: ํ•ญ๋ชฉ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ง‘ํ•ฉ์— ๊ฐ ํ•ญ๋ชฉ์ด ๋ช‡๊ฐœ์”ฉ ์žˆ๋Š”์ง€ ์„ธ๋Š” ์ž‘์—…์„ ํ•˜์—ฌ, ์„ ํ˜• ์‹œ๊ฐ„์— ์ •๋ ฌํ•˜๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ •๋ ฌ๊ณผ์ •

  • ์ •์ˆ˜๋‚˜, ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ์— ๋Œ€ํ•ด์„œ๋งŒ ์ ์šฉ๊ฐ€๋Šฅ.
    ๊ฐ ํ•ญ๋ชฉ์˜ ๋ฐœ์ƒ ํšŒ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด, ์ •์ˆ˜ ํ•ญ๋ชฉ์œผ๋กœ ์ธ๋ฑ์Šค๋˜๋Š” ์นด์šดํŠธ๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ.
  • ์นด์šดํŠธ๋“ค์„ ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋ ค๋ฉด ์ง‘ํ•ฉ ๋‚ด์˜ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ์•Œ์•„์•ผํ•จ.

์‹œ๊ฐ„๋ณต์žก๋„ = O(n+k)
n: ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ์ˆ˜, k: ์ •์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’

์ •๋ ฌ ๋น„๊ต


์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ