๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Code Tree

[์ฝ”๋“œํŠธ๋ฆฌ] ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„(1)

by xxilliant 2023. 2. 6.
728x90
๋ฐ˜์‘ํ˜•
SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

function example(n)
  while 0 > n or n > 100
    if n < 0
      n++
    else
      n--
  return n

 

์œ„ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ n์— ๊ฐ’์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์•…์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ด์œ ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•จ์ด์—ˆ์ฃ ? ๋‹น์—ฐํžˆ ์ž…๋ ฅ๊ฐ’์ด ์•„์ฃผ ํฌ๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋„ ๋“ค์–ด์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ ์„ ์ƒ๊ธฐํ•œ ์ฑ„๋กœ, ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

 


for

set x = 0
for i = 0 ... i < 10
  x += 1
  print(x)

 

for๋ฌธ ํ•œ๋ฒˆ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋ฏ€๋กœ, 10๋ฒˆ ๋ฐ˜๋ณต์„ ํ•ด๋„ ๊ฒฐ๊ตญ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” 

 

๊ทธ๋Ÿฌ๋‚˜ ๋ถˆ๋ถ„๋ช…ํ•œ ๊ฐ’์ด ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด ์ƒํ™ฉ์€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

function example(n)
  set x = 0
  for i  = 0 ... i < n
    x += 1
    print(x) 
 

์กฐ๊ธˆ ๋‹นํ™ฉ์Šค๋Ÿฌ์šธ ์ˆ˜๋„ ์žˆ์ง€๋งŒ for๋ฌธ ๋‚ด๋ถ€์˜ ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ด๋‹ˆ, N๋ฒˆ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๋ฉ๋‹ˆ๋‹ค.

 

set x = 0
for i = 0 ... i < n / 2
  x += 1
  print(x)
 

์œ„์˜ ์ฝ”๋“œ๋Š” ๋ฒˆ ์ˆ˜ํ–‰์ด ๋˜๊ฒ ์ง€๋งŒ,  ํ‘œ๊ธฐ๋ฒ•์€ ์ƒ์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ˆ๋‹ค.


while

while ๋ฌธ์˜ ๊ฒฝ์šฐ, ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ๋ถˆ๋ถ„๋ช… ํ•˜๋ฏ€๋กœ for์— ๋น„ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•  ๊ฒƒ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

function example(n)
  while 0 > n or n > 100
    if n < 0
      n++
    else
      n--
  return n

 

n์ด ๋งŒ์•ฝ์— ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ๊ฐ’์ด๋ผ๋ฉด ์ด๋ก ์ ์œผ๋กœ N - 100ํšŒ์˜ ์ˆœํšŒ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ  ์ด ๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.


 

set x = 0
for i = 0 ... i < n
  for j = 5 ... j < n
      x += 1
      print(x)

for i = 0 ... i < n
    x += 1

print(x)

 

์œ„ ์ฝ”๋“œ์˜ ํฌ๋ฌธ์€ , ์•„๋ž˜ ํฌ๋ฌธ์€  ์ด์ง€๋งŒ N^2์ด ํ•ญ์ƒ N๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ

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

 

๋ฐ˜๋ณต๋ฌธ์ด ์ค‘์ฒฉ๋˜๋ฉด ๋ฐ”๊นฅ ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์„ ๋ชจ๋‘ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

function solution1(n)
    for i = 1 ... i <= n
        for j = 1 ... j <= 5
            for k = 1 ... k <= n
                    print("Hello")

-> N*5*N =

 

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜์ธ ์„ ํƒ ์ •๋ ฌ์˜ ์ฝ”๋“œ๋กœ, ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋น„ํ•ด ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

function Selection_sort(arr)
  set len = arr.size
  for i = 0 ... i < len-1
    set min = i
    for j = i+1 ... j < len
      if arr[j] < arr[min]
        min = j
    set tmp = arr[i]
    arr[i] = arr[min]
    arr[min] = tmp
  
  return arr

-> 

 

function solution1(n)
 for i = 0 ... i < n * n
   for k = 0 ... k <= i
     print("Hi")
   for j = n ... j >= 0
     print("Bye")

->  (N^2)*(N^2) + (N^2)*N  => 

function solution2(n)
  for i = 0 ... i < n
    set j = 1
    while j < i
      j *= 2

์œ„ ์ฝ”๋“œ๋Š” for๋ฌธ ์•ˆ์— while๋ฌธ์ด ์žˆ๋Š”๋ฐ,

i๊ฐ€ 2๋ฐฐ ๋Š˜์–ด๋‚ ๋•Œ๋งˆ๋‹ค while๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ 1์”ฉ ๋Š˜์–ด๋‚˜๋ฏ€๋กœ ์ด log i ๋ฒˆ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” for๋ฌธ์€ N, while๋ฌธ์€ log N ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

-> O(N logN)

 

์ถœ์ฒ˜ ์ฝ”๋“œํŠธ๋ฆฌ
728x90
๋ฐ˜์‘ํ˜•