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

๐Ÿช CS

์‹œ๊ฐ„ ๋ณต์žก๋„ Big-O

๋ณต์žก๋„

์‹œ๊ฐ„ ๋ณต์žก๋„


๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ์ž…๋ ฅ์˜ ํ•จ์ˆ˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋กœ์ง์ด '์–ผ๋งˆ๋‚˜ ์˜ค๋žœ ์‹œ๊ฐ„'์ด ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์“ฐ์ด๋ฉฐ, ๋ณดํ†ต Big-O ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

Big-O ํ‘œ๊ธฐ๋ฒ•


์ž…๋ ฅ ๋ฒ”์œ„ n์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ๋กœ์ง์ด ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ
์˜ˆ๋ฅผ ๋“ค์–ด, '์ž…๋ ฅ ํฌ๊ธฐ n'์˜ ๋ชจ๋“  ์ž…๋ ฅ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด 10n^2 + n์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ด๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์ด ๋œ๋‹ค.

for (int i=0; i<10; i++) {
    for (int j=0; j<n; j++) {
        for (int k=0; k<n; k++) {
            if (true) cout << k << '\n';
        }
    }
}
for (int i=0; i<n; i++) {
    if (true) cout << i << '\n';
}

'๊ฐ€์žฅ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ผ์น˜๋Š”' ํ•ญ์˜ ์ƒ์ˆ˜ ์ธ์ž๋ฅผ ๋นผ๊ณ  ๋‚˜๋จธ์ง€ ํ•ญ์„ ์—†์•ค ๊ฒƒ์ด๋‹ค. ๋‹ค๋ฅธ ํ•ญ๋“ค์ด ์‹ ๊ฒฝ ์“ฐ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฆ๊ฐ€ ์†๋„๋ฅผ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์—ฐ์‚ฐ๋Ÿ‰์ด ๊ฐ€์žฅ ๋งŽ์ด ์ปค์ง€๋Š” ํ•ญ์€ n์˜ ์ œ๊ณฑํ•ญ์ด๊ณ , ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ทธ์— ๋น„ํ•ด ๋ฏธ๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ๋งŒ ์‹ ๊ฒฝ ์“ฐ๋ฉด ๋œ๋‹ค๋Š” ์ด๋ก ์ด๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์กด์žฌ ์ด์œ 

ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋กœ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์“ฐ์ด๋Š” ์ฒ™๋„๊ฐ€ ๋˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ ์ด ๋กœ์ง์ด O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  9์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฐœ์„ ํ•œ๋‹ค๋ฉด 3์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์†๋„ ๋น„๊ต

O(1)๊ณผ O(n)์€ ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚œ๋‹ค. O(n^2)์€ ๋งํ•  ๊ฒƒ๋„ ์—†์ด ์ฐจ์ด๊ฐ€ ํฌ๋‹ค. ์ฆ‰, O(n^2)๋ณด๋‹ค๋Š” O(n), O(n)๋ณด๋‹ค๋Š” O(1)์„ ์ง€ํ–ฅํ•ด์•ผ ํ•œ๋‹ค.

๊ณต๊ฐ„ ๋ณต์žก๋„


ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ ํ•„์š”๋กœ ํ•˜๋Š” ์ž์› ๊ณต๊ฐ„์˜ ์–‘

  • ์ •์  ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ ๊ฒƒ ๋ง๊ณ ๋„ ๋™์ ์œผ๋กœ ์žฌ๊ท€์ ์ธ ํ•จ์ˆ˜๋กœ ์ธํ•ด ๊ณต๊ฐ„์„ ๊ณ„์†ํ•ด์„œ ํ•„์š”๋กœ ํ•  ๊ฒฝ์šฐ๋„ ํฌํ•จํ•œ๋‹ค.
  • int a[1004]์—์„œ a ๋ฐฐ์—ด์€ 1004 x 4๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ, ์ด๋Ÿฐ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.

์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„


์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์“ธ ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ž˜ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. ๋ณดํ†ต ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•  ๋•Œ ํ‰๊ท , ์ตœ์•…์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•˜๋ฉด์„œ ์“ด๋‹ค.