๐Ÿšถโ€โ™‚๏ธRoad to ์ฝ”ํ…Œ(10) - ์žฌ๊ท€

์•ˆํƒœํ˜„ยท2024๋…„ 12์›” 27์ผ

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
10/15
post-thumbnail

๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ BaaarkingDog๋‹˜์˜ ์‹ค์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[์ถ”๊ฐ€] ์šฉ๊ฐํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ถ”๊ฐ€] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ - ํŒŒ์ด์ฌ

[์ถ”๊ฐ€] ์ขŒ์ถฉ์šฐ๋Œ, ํŒŒ์ด์ฌ์œผ๋กœ ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌํ˜„ํ•˜๊ธฐ

์žฌ๊ท€

ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ฐ„๋‹จํ•œ ์žฌ๊ท€ํ•จ์ˆ˜

์žฌ๊ท€๋กœ N๋ถ€ํ„ฐ 1๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์™€ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ ์งœ๋ณด๊ธฐ

import sys


def print_recur(n):
  if n<0:
    return
  print(n)
  n-=1
  print_recur(n)
  
def summ(n):
  
  if n<0:
    return 0
  else:
    return n+summ(n-1)
    
    
n=int(sys.stdin.readline())
print_recur(n)
sres=summ(n)

print(sres)

์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์žฌ๊ท€๋กœ ํ‘ผ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ๊ท€๋‚ฉ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ.

-> ์—ฌ๊ธฐ์„œ ๊ท€๋‚ฉ์ ์ธ ๊ฒƒ์€ ์ƒ์‹๊ณผ๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

๋„๋ฏธ๋…ธ๋ฅผ ์“ฐ๋ŸฌํŠธ๋ฆด ๋•Œ ์™œ ๋ชจ๋“  ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์งˆ๊นŒ?

  1. 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ชจ๋“  ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์ง„๋‹ค.
  2. ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ• ์ด์šฉ
    • 1๋ฒˆ ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์ง„๋‹ค
    • k๋ฒˆ ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์ง„๋‹ค
    • k+1๋ฒˆ ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์ง„๋‹ค
      ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฏ€๋กœ ๋ชจ๋“  ๋„๋ฏธ๋…ธ๊ฐ€ ์“ฐ๋Ÿฌ์ง„๋‹ค
      = ๊ฒฐ๊ตญ 1๋ฒˆ ์„ค๋ช…๊ณผ ๊ฐ™์ง€๋งŒ ์ ˆ์ฐจ์ง€ํ–ฅํ˜•์ด ์•„๋‹Œ ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์œผ๋กœ์„œ ์“ฐ๋Ÿฌ์ง€๋Š” ๊ฒƒ์ด๋‹ค.

n๋ถ€ํ„ฐ 1๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜(func1)๋ฅผ ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด
func(1)์ด 1์„ ์ถœ๋ ฅํ•˜๋ฉด func(k)๊ฐ€ k,k-1,k-2, ... 1์„ ์ถœ๋ ฅํ•˜๋ฏ€๋กœ func(k+1)์€ k+1๋ถ€ํ„ฐ 1๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
-> ์ด๋Š” func(k+1)์ด ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ k+1์ด ์ถœ๋ ฅ๋œ ํ›„ k๋ถ€ํ„ฐ 1๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” func(k)๋ฅผ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด ๋‘ ๋ฌธ์žฅ์ด ์ฐธ์ด๋ฏ€๋กœ ๊ท€๋‚ฉ์  ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด func()๊ฐ€ n๋ถ€ํ„ฐ 1๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์กฐ๊ฑด

ํŠน์ • ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค.
๋ชจ๋“  ์ž…๋ ฅ์€ base condition(base case)์œผ๋กœ ์ˆ˜๋ ดํ•ด์•ผํ•œ๋‹ค.
ex) n=0์ผ ๋•Œ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๊ฐ€ ๋˜๋‹ˆ ์ด๊ฒƒ์ด base condition์ด๋‹ค.

์ •๋ณด

  • ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์–ด๋–ค ๊ฒƒ์„ ๋ฐ›๊ณ  ์–ด๋””๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ํ›„ ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ๋„˜๊ฒจ์ค„์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •ํ•ด์•ผํ•œ๋‹ค.
  • ๋ชจ๋“  ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ๋ฐ˜๋ณต๋ฌธ๋งŒ์œผ๋กœ๋„ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์žฌ๊ท€๋Š” ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ์— ๋น„ํ•ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ/์‹œ๊ฐ„์—์„œ ์†ํ•ด๋ฅผ ๋ณธ๋‹ค.
  • ํ•œ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
    -> ์ด๋ฏธ ๊ณ„์‚ฐํ•œ ๊ฒƒ์„ ๋˜ ๊ณ„์‚ฐํ•˜๋Š” ์ผ์ด ๋นˆ๋ฒˆํ•˜๋‹ค.
  • ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๋ถ€๋ฅผ ๋•Œ ์Šคํƒ ์˜์—ญ์— ๊ณ„์† ๋ˆ„์ ์ด ๋œ๋‹ค.

๊ตฌํ˜„์„ ํ•  ๋•Œ 3๊ฐ€์ง€๋ฅผ ์ง€์ผœ์•ผ ํ•œ๋‹ค.
1. ํ•จ์ˆ˜์˜ ์ •์˜
2. base condition
3. ์žฌ๊ท€ ์‹

์—ฐ์Šต ๋ฌธ์ œ 1 - ๊ฑฐ๋“ญ ์ œ๊ณฑ

import sys

a,b,c=map(int,sys.stdin.readline().split())

def recur(a,b):
  
  if b==1:
    return a%c
  else:
    tmp=recur(a,b//2)
    if b%2==0: #base condition
      return (tmp * tmp )%c 
    else:		#base condition
      return (tmp * tmp*a)%c

print(recur(a,b))  

๋งŒ์•ฝ a^10์ผ ๋•Œ, (a^5) x (a^5)์™€ ๊ฐ™๋‹ค.
b๊ฐ€ 11๊ฐ™์€ ํ™€์ˆ˜ ์ผ๊ฒฝ์šฐ (a^b/2) x (a^b/2) x a์ด๋‹ค.
์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ ˆ๋ฐ˜์”ฉ ๊นŽ์ด๊ธฐ ๋•Œ๋ฌธ์— O(logb)์ด๋‹ค.

์—ฐ์Šต๋ฌธ์ œ 2 - ํ•˜๋…ธ์ด ํƒ‘

import sys

k=int(sys.stdin.readline())

# 2 ๋ฒˆ ์›ํŒ์ด ๊ฐ€๋ ค๋ฉด ์ด๋™์ด 3๋ฒˆ์ด ํ•„์š”ํ•˜๊ณ 
# 3 ๋ฒˆ ์›ํŒ์ด ๊ฐ€๋ ค๋ฉด ์ด๋™์ด 7๋ฒˆ ํ•„์š”ํ•˜๋‹ค.
# ์˜ฎ๊ธด ํšŸ์ˆ˜๋Š” 2k+1
# N ๋ฒˆ์งธ ์›ํŒ์ด ๊ฐ€๋ ค๋ฉด N-1๋ฒˆ๊นŒ์ง€์˜ ์›ํŒ์ด ๋จผ์ € ๊ธฐ๋‘ฅ 2์— ๊ฐ€์•ผํ•œ๋‹ค
# N ๋ฒˆ์งธ ์›ํŒ์„ ๊ธฐ๋‘ฅ 3์— ์˜ฎ๊ธฐ๊ณ  ๋‹ค์‹œ n-1์›ํŒ์„ ๊ธฐ๋‘ฅ 3์œผ๋กœ ์˜ฎ๊ธด๋‹ค.
# ์›ํŒ์ด 1๊ฐœ๋ฉด ์›ํ•˜๋Š” ๊ณณ์— ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด K+1๊ฐœ๋„ ๋‚ด๊ฐ€ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. 



def hanoi(a,b,n): 
  # ์›ํŒ N๊ฐœ๋ฅผ ๊ธฐ๋‘ฅ a์—์„œ b๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
  """
  ์žฌ๊ท€์‹
  n-1๊ฐœ์˜ ์›ํŒ์„ ๊ธฐ๋‘ฅ a์—์„œ ๊ธฐ๋‘ฅ 6-a-b๋กœ ์˜ฎ๊ธด๋‹ค
  n๋ฒˆ์˜ ์›ํŒ์„ ๊ธฐ๋‘ฅ a์—์„œ ๊ธฐ๋‘ฅ b๋กœ ์˜ฎ๊ธด๋‹ค.
  n-1๊ฐœ์˜ ์›ํŒ์„ ๊ธฐ๋‘ฅ 6-a-b์—์„œ ๊ธฐ๋‘ฅ b๋กœ ์˜ฎ๊ธด๋‹ค.
  """
  if n==1:
    print(a,b)
    return
  
  hanoi(a,6-a-b,n-1)
  print(a,b)
  hanoi(6-a-b,b,n-1)

print(2**k-1)
hanoi(1,3,k)

์—ฐ์Šต๋ฌธ์ œ 3 - Z

  • ํ•จ์ˆ˜์˜ ์ •์˜ : 2^n x 2^n ๋ฐฐ์—ด์—์„œ (r,c)๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
  • base condition : n=0 ์ผ๋•Œ (๋ฐฉ๋ฌธํ•  2x2๊ฐ€ ์—†์„๋•Œ) return
  • ์žฌ๊ท€ ์‹
    (r,c)๊ฐ€ 1๋ฒˆ ์‚ฌ๊ฐํ˜•์ผ ๋•Œ return recur(n-1,r,c)
    (r,c)๊ฐ€ 2๋ฒˆ ์‚ฌ๊ฐํ˜•์ผ ๋•Œ return halfxhalf + recur(n-1,r,c-half)
    (r,c)๊ฐ€ 3๋ฒˆ ์‚ฌ๊ฐํ˜•์ผ ๋•Œ
    (r,c)๊ฐ€ 4๋ฒˆ ์‚ฌ๊ฐํ˜•์ผ ๋•Œ
import sys

def recur(n,r,c):
  if n==0:
    return 0
  half=2**(n-1)	# 4๊ฐœ์งœ๋ฆฌ ์‚ฌ๊ฐํ˜• ๋ช‡๊ฐœ ์ธ์ง€
  if r<half and c<half: # ์™ผ์ชฝ ์œ„
    return recur(n-1,r,c)
  if r<half and c>=half: # ์˜ค๋ฅธ์ชฝ ์œ„
    return (half*half)+recur(n-1,r,c-half) 
  if r>=half and c<half: # ์™ผ์•„๋ž˜
    return (2*half*half)+recur(n-1,r-half,c)
  else:                  # ์˜ค๋ฅธ ์•„๋ž˜
    return (3*half*half)+recur(n-1,r-half,c-half)

  


n,r,c=map(int,sys.stdin.readline().split())

print(recur(n,r,c))

์žฌ๊ท€ in Java

์žฌ๊ท€(Recursion)๋Š” ํฐ ๋ฌธ์ œ๋ฅผ ๋™์ผํ•œ ์œ ํ˜•์˜ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋” ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ๊ฐœ๋… ๊ฐ™์ง€๋งŒ, ์žฌ๊ท€๋Š” ์™„์ „ํƒ์ƒ‰, ๋™์  ๊ณ„ํš๋ฒ•(DP), ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰(DFS), ํŠธ๋ฆฌ ์ˆœํšŒ ๋“ฑ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ํ•ต์‹ฌ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

1. ์žฌ๊ท€์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

  1. Base Case (๊ธฐ์ € ์กฐ๊ฑด)
    ๋” ์ด์ƒ ๋ฌธ์ œ๋ฅผ ์ชผ๊ฐค ์ˆ˜ ์—†๊ฑฐ๋‚˜, ๋‹ต์ด ๋ช…ํ™•ํ•ด์ง€๋Š” ์ข…๋ฃŒ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

Base Case๊ฐ€ ์—†์œผ๋ฉด ์žฌ๊ท€๋Š” ๋ฌดํ•œํžˆ ํ˜ธ์ถœ๋˜์–ด StackOverflowError(RecursionError)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. Recursive Call (์žฌ๊ท€ ํ˜ธ์ถœ)
    ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

2. ์ž๋ฐ” ์žฌ๊ท€ ์˜ˆ์‹œ

2-1. ํŒฉํ† ๋ฆฌ์–ผ (factorial)
ํŒฉํ† ๋ฆฌ์–ผ์€ 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

public static int factorial(int n) {
    if (n == 1) { // Base Case
        return 1;
    }
    return n * factorial(n - 1); // Recursive Call
}

์‹คํ–‰ ๊ณผ์ • ์˜ˆ์‹œ
factorial(4)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด:

factorial(4) -> 4 * factorial(3)
factorial(3) -> 3 * factorial(2)
factorial(2) -> 2 * factorial(1)
factorial(1) -> 1  (Base Case)

2-2. ํ”ผ๋ณด๋‚˜์น˜ (fibonacci)
ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ ์•ž ๋‘ ํ•ญ์˜ ํ•ฉ์ด ๋‹ค์Œ ํ•ญ์ด ๋˜๋Š” ์ˆ˜์—ด์ž…๋‹ˆ๋‹ค.'

public static int fibo(int n) {
    if ((n == 1) || (n == 2)) {
        return 1;
    }
    return fibo(n - 1) + fibo(n - 2);
}
fibo(5) -> fibo(4) + fibo(3)
fibo(4) -> fibo(3) + fibo(2)
fibo(3) -> fibo(2) + fibo(1) = 1 + 1

3. ์žฌ๊ท€์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

์žฌ๊ท€์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ, ๋Œ€๋žต์ ์œผ๋กœ๋Š”
์žฌ๊ท€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜ ร— (์žฌ๊ท€ ํ•จ์ˆ˜ ํ•˜๋‚˜๋‹น ์‹œ๊ฐ„๋ณต์žก๋„)๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์žฌ๊ท€ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  1. ๋ฌดํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€
    ๊ธฐ์ € ์กฐ๊ฑด์ด ์—†์œผ๋ฉด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋ฐ˜๋“œ์‹œ ๋ช…ํ™•ํžˆ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ๊ธฐ์ € ์กฐ๊ฑด์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š๋”๋ผ๋„, ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฉˆ์ถ”๋Š” ์ƒํ™ฉ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ์‹œ: DFS์—์„œ ๋ฐฉ๋ฌธ ์ฒดํฌ
public static void dfs(int cur) {
    visited[cur] = true;
    for (int next : graph.get(cur)) {
        if (!visited[next]) {
            dfs(next);
        }
    }
}

if (!visited[next]) ์กฐ๊ฑด๋ฌธ์€ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ œํ•œํ•˜๋Š” ํ•„ํ„ฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ๋งŒ ์žฌ๊ท€ ํ˜ธ์ถœํ•˜๋„๋ก ์ œ์–ดํ•˜๋ฏ€๋กœ, ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ์กฐ๊ฑด์ด ๋ช…์‹œ์ ์ธ ๊ธฐ์ € ์กฐ๊ฑด์€ ์•„๋‹ˆ๋ฏ€๋กœ, ๊ธฐ์ €์กฐ๊ฑด์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ธด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

  1. ์žฌ๊ท€ ๊นŠ์ด์™€ ๋Œ€์•ˆ ๊ณ ๋ ค
  • ์žฌ๊ท€ ๊นŠ์ด๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์„ค์ •ํ•˜์ง€ ๋ง ๊ฒƒ
    ์žฌ๊ท€ ๊นŠ์ด๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ(OutOfMemoryError)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 10,000 ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์•ˆ์ด ์žˆ๋Š”์ง€ ๊ณ ๋ ค
    ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์žฌ๊ท€ ์ œํ•œ์„ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์‹œ๋„ํ•ด ๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
    ๋ฐ˜๋ณต๋ฌธ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์žฌ๊ท€ ๋Œ€์‹  ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

profile
๊ณ ๊ฐ์—๊ฒŒ ์‹ ๋ขฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์•ˆํƒœํ˜„์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€