https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

  • (), [], {} ๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, [] ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, {} ์™€ ([]) ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, {}([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

 

๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๊ด„ํ˜ธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x (0 ≤ x < (s์˜ ๊ธธ์ด)) ์นธ๋งŒํผ ํšŒ์ „์‹œ์ผฐ์„ ๋•Œ s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๊ฒŒ ํ•˜๋Š” x์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1์ด์ƒ 1,000์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

s result
"[](){}" 3
"}]()[{" 2
"[)(]" 0
"}}}" 0

 

 

์†Œ์Šค ์ฝ”๋“œ
def solution(s):
    answer = 0
    n = len(s)

    for i in range(n):
        stack = []  
        for j in range(n):
            # ๋ฌธ์ž์—ด ํšŒ์ „
            c = s[(i+j)%n]

            # ์—ด๋ฆฐ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            if c=="(" or c=="[" or c=="{":
                stack.append(c)
            # ๋‹ซํžŒ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            else:
                # ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                if len(stack)==0:
                    stack.append(0)
                    break
                # ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์„ ํ™•์ธํ•˜๊ณ  ์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ
                elif c==")" and stack[-1]=="(":     
                    stack.pop()
                elif c=="]" and stack[-1]=="[":
                    stack.pop()
                elif c=="}" and stack[-1]=="{":
                    stack.pop()
                # ์ง์ด ๋งž์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                else:
                    stack.append(0)
                    break
        
        # ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์Šคํƒ์€ ๋น„์–ด์žˆ์œผ๋ฏ€๋กœ +1
        if not stack:
            answer += 1

    return answer

 

ํ’€์ด

  • for๋ฌธ์— ๋”ฐ๋ผ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์„ ํšŒ์ „
  • ๋ฌธ์ž์—ด์ด ์—ด๋ฆฐ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ ์Šคํƒ์— ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€
  • ๋ฌธ์ž์—ด์ด ๋‹ซํžŒ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์ด๋ฉด์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ์•ž์— ์—ด๋ฆฐ๊ด„ํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์™€ ์Šคํƒ์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์™€ ์ง ๋งž์ถ”๊ธฐ (์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ)
    • ์ง์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
  • ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์Šคํƒ์— 0์ด ์žˆ์„ ๊ฒƒ์ด๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ answer + 1

 

๋ฌธ์ž์—ด์„ ํšŒ์ „ํ•˜๋ฉด์„œ ์ง์„ ๋งž์ถฐ์•ผํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข€ ์–ด๋ ค์› ๋‹ค... ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฑ…์—์„œ ์Šคํƒ์˜ ์˜ˆ์‹œ ๋ฌธ์ œ๋กœ ๋‚˜์™€์žˆ์–ด์„œ ์Šคํƒ์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๋งŒ ๋ดค์„ ๋•Œ๋Š” ์Šคํƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์Šคํƒ(Stack)์ด๋ž€?

๋จผ์ € ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ผ ๋‚˜์ค‘์— ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • FILO(First In Last Out) : ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ค๋Š” ๊ทœ์น™
  • push : ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ / pop : ์Šคํƒ์—์„œ ๊บผ๋‚ด๋Š” ์—ฐ์‚ฐ

 

์Šคํƒ์˜ ๋™์ž‘์›๋ฆฌ

์ดˆ๊ธฐ ๋นˆ ์Šคํƒ์— ๋ฐ์ดํ„ฐ'1'๊ณผ ๋ฐ์ดํ„ฐ'2' push
popํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ'2' ์ œ๊ฑฐ
๋ฐ์ดํ„ฐ'3'์„ pushํ•˜๋ฉด ๋ฐ์ดํ„ฐ'1' ์œ„์— ์œ„์น˜
2๋ฒˆ ์—ฐ์†์œผ๋กœ pop์„ ํ•˜๋ฉด '3' → '1' ์ˆœ์„œ๋กœ ์ œ๊ฑฐ

 

์Šคํƒ์˜ ADT (Abstract Data Type)

์ถ”์ƒ ์ž๋ฃŒํ˜•์ด๋ผ๋Š” ๋œป์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์žˆ๊ณ  ์‹ค์ œ๋กœ ๊ตฌํ˜„์€ ๋˜์ง€์•Š์€ ์ž๋ฃŒํ˜•

๊ตฌ๋ถ„ ์ •์˜ ์„ค๋ช…
์—ฐ์‚ฐ boolean isFull() ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ maxsize์ธ์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด True / ์•„๋‹ˆ๋ฉด False)
boolean isEmpty() ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š”์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False / ์•„๋‹ˆ๋ฉด True)
void push(Item Tyoe item) ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œ
ItemType pop() ์Šคํƒ์—์„œ ์ตœ๊ทผ์— ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
์ƒํƒœ Int top ์Šคํƒ์—์„œ ์ตœ๊ทผ์— ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ก
ItemType data[maxsize] ์Šคํƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฐ์—ด (์ตœ๋Œ€ maxsize๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ)

 

์Šคํƒ์˜ ์„ธ๋ถ€๋™์ž‘

์Šคํƒ์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ
์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ (push)
์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ (pop)

 

 

์Šคํƒ ๊ตฌํ˜„ํ•˜๊ธฐ

stack = []          # ์Šคํƒ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
max_size = 10       # ์Šคํƒ์˜ ์ตœ๋Œ€ํฌ๊ธฐ

# ์Šคํƒ์ด ๊ฐ€๋“์ฐผ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
def isFull(stack):
    return len(stack) == max_size

# ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
def isEmpty(stack):
    return len(stack) == 0

# ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
def push(stack, item):
    if isFull(stack):
        print("์Šคํƒ์ด ๊ฐ€๋“ ์ฐผ์Šต๋‹ˆ๋‹ค.")
    else:
        stack.append(item)
        print("๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")

# ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ํ•จ์ˆ˜
def pop(stack):
    if isEmpty(stack):
        print("์Šคํƒ์ด ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค.")
        return None
    else:
        return stack.pop()

 

  • ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์‹ค์ œ ์ฝ”๋“œ์—์„œ max_size, isFull(), isEmpty() ํ•จ์ˆ˜ ๊ตฌํ˜„ X
  • push(), pop() ํ•จ์ˆ˜๊ฐ€ ํ•˜๋Š” ์ผ์€ ๋ฆฌ์ŠคํŠธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๋ฏ€๋กœ ๊ตณ์ด ๊ตฌํ˜„ X
  • ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์•„๋ž˜ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ์–ด์„œ ์‚ฌ์šฉ
stack = []

# ์Šคํƒ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
stack.append(1)
stack.append(2)
stack.append(3)

# ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
top_element = stack.pop()	# top_element = 3
next_element = stack.pop()	# next_element = 2

# ์Šคํƒ์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ
stack_size = len(stack)

 

→ ์Šคํƒ์˜ ๊ฐœ๋… ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์Šคํƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ์—ฐ์Šต์ด ํ•„์š” !!


โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

“๋ชจ๋‘๋ฅผ ์œ„ํ•œ AI ์Šˆํผ์ปด” ์• ์ € ํด๋ผ์šฐ๋“œ AI ๋ฐ์ดํ„ฐ์„ผํ„ฐ์˜ ๋‚ด๋ถ€ ์‚ดํŽด๋ณด๊ธฐ (๋งํฌ)

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
 ๋นŒ๋“œ ์ปจํผ๋Ÿฐ์Šค์—์„œ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์ถ”๋ก  ๊ฐ€์†๊ธฐ, ๊ณ ๋Œ€์—ญํญ ์—ฐ๊ฒฐ, ํšจ์œจ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ„ํ•œ ๊ฐ์ข… ํˆด์„ ํ†ตํ•ด ์• ์ € ํด๋ผ์šฐ๋“œ๊ฐ€ ๋Œ€๊ทœ๋ชจ AI ์›Œํฌ๋กœ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ง€์›ํ•˜๋Š”์ง€ ์„ค๋ช…ํ–ˆ๋‹ค.

AI ์Šˆํผ์ปดํ“จํ„ฐ ๊ตฌ์ถ•

 AI ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์˜ ๊ทœ๋ชจ๋Š” ์—„์ฒญ๋‚˜๋‹ค. 2024๋…„ 6์›”, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์ „ ์„ธ๊ณ„ ๋ฐ์ดํ„ฐ์„ผํ„ฐ์— 30๋Œ€ ์ด์ƒ์˜ ์œ ์‚ฌํ•œ ์Šˆํผ์ปดํ“จํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค. ์ผ๋‹จ ๋ชจ๋ธ์ด ๊ตฌ์ถ•๋˜๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ถ”๋ก ์—๋Š” ์Šˆํผ์ปดํ“จํ„ฐ ์ˆ˜์ค€์˜ ์—ฐ์‚ฐ ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ๋งŽ์€ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋Š” ์• ์ € ํด๋ผ์šฐ๋“œ๊ฐ€ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์ง„ ๋งŽ์€ GPU๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

ํŠธ๋ ˆ์ด๋‹์„ ๋„˜์–ด ์ถ”๋ก ์„ ์œ„ํ•œ ์„ค๊ณ„
 ์• ์ € ํด๋ผ์šฐ๋“œ์˜ ํ”„๋กœ์ ํŠธ POLCA๋Š” ์ตœ๋Œ€ ์ „๋ ฅ ์†Œ๋น„์— ๋Œ€์‘ํ•˜๋Š” ํ”„๋กœ๋น„์ €๋‹์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ถ”๋ก  ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ฝ 20%์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ์ฃผํŒŒ์ˆ˜์™€ ์ „๋ ฅ์„ ์กฐ์ ˆํ•ด ๋ฐ์ดํ„ฐ์„ผํ„ฐ์— 30% ๋” ๋งŽ์€ ์„œ๋ฒ„๋ฅผ ๋ฐฐ์น˜ํ•˜์—ฌ AI ๋ฐ์ดํ„ฐ์„ผํ„ฐ์˜ ์ปดํ“จํŒ…, ์ „๋ ฅ, ์—ด ์ˆ˜์š”์— ๋Œ€ํ•ด ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ์ง€์† ๊ฐ€๋Šฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.
 ๋˜ํ•œ, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์Šคํ† ๋ฆฌ์ง€ ๊ฐ€์†๊ธฐ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ์ž‘์—…์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ฐ€์šฉ ๋Œ€์—ญํญ์„ ์ด์šฉํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ์ด๋‚˜ ํด๋ผ์šฐ๋“œ์—์„œ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์บ์‹œ๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•˜๊ณ  ์žˆ๋‹ค. ๋ณ‘๋ ฌ ์ฝ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋ฉด ๋Œ€๋Ÿ‰์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์กด ๋ฐฉ์‹๋ณด๋‹ค ๊ฑฐ์˜ ๋‘ ๋ฐฐ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

AI์— ํ•„์š”ํ•œ ๊ณ ๋Œ€์—ญํญ ๋„คํŠธ์›Œํฌ
์ปดํ“จํŒ…๊ณผ ์Šคํ† ๋ฆฌ์ง€๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์ˆ˜๋ฐฑ ๊ฐœ์˜ GPU์—์„œ ์ž‘๋™ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ณ‘๋ ฌ ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” ๋„คํŠธ์›Œํ‚น์ด ์—ฌ์ „ํžˆ ์ค‘์š”ํ•˜๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์„œ๋ฒ„์—์„œ 1.2TBps์˜ ๋‚ด๋ถ€ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•ด 8๊ฐœ์˜ GPU๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋™์‹œ์— ์ธํ”ผ๋‹ˆ๋ฐด๋“œ ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด ๊ฐœ๋ณ„ ์„œ๋ฒ„์˜ ๊ฐœ๋ณ„ GPU ๊ฐ„์— 400Gbps๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” AI๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ ํฌ์ง€์™€ ์›ํ’€
์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์€ ๊ธฐ๋ณธ ํ”Œ๋žซํผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐ ์ง€์› ํˆด์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ”„๋กœ์ ํŠธ ํฌ์ง€(Project Forge)๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ์ด์œ ์ด๋‹ค. ๋ถ„์‚ฐ ์ธํ”„๋ผ ์ „๋ฐ˜์—์„œ ์ž‘์—…์„ ์˜ˆ์•ฝํ•˜๋Š” ๋™์‹œ์— ํ•„์ˆ˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ AI ์ปดํ“จํŒ…์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํฌ์ง€์˜ ์Šค์ผ€์ค„๋Ÿฌ๋Š” AI ๊ฐ€์†๊ธฐ๋ฅผ ๊ฐ€์ƒ GPU ์šฉ๋Ÿ‰์˜ ๋‹จ์ผ ํ’€๋กœ ์ทจ๊ธ‰ํ•˜๋ฉฐ ์ด๋ฅผ ์›ํ’€(One Pool)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ ์›Œํฌ๋กœ๋“œ์—๋Š” ์ด๋Ÿฐ ๊ฐ€์ƒ GPU์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘์–ด ๊ด€๋ฆฌํ•œ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ ํฌ์ง€๋Š” ์žฅ์• ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด ํ˜ธ์ŠคํŠธ ํ”Œ๋žซํผ์„ ๋ณต๊ตฌํ•˜์—ฌ ํƒ„๋ ฅ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ผ๊ด€์„ฑ ๋ฐ ๋ณด์•ˆ : AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ค€๋น„ ์™„๋ฃŒ
์• ์ €์˜ ํ”„๋กœ์ ํŠธ ํ”Œ๋ผ์ดํœ (Project Flywheel)์€ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ, ๊ฐ€์ƒ GPU์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กฌํ”„ํŠธ์˜ ์ž‘์—…์„ ์ธํ„ฐ๋ฆฌ๋น™ํ•ด ํ˜ธ์ŠคํŠธ ๋ฌผ๋ฆฌ GPU์—์„œ ์ผ๊ด€๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ๋„ ์ผ์ •ํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”๋กœ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋ชจ๋ธ์„ ํ•™์Šตํ•  ๋•Œ ์ ์šฉํ•˜๋Š” ๊ธฐ๋ฐ€ ์ปดํ“จํŒ… ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•ต์‹ฌ ์šฉ์–ด
  • Azure ๋ฐ์ดํ„ฐ์„ผํ„ฐ๋ž€?
    • Azure ๋ฐ์ดํ„ฐ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ ์„œ๋ฒ„๊ฐ€ ๋ณด๊ด€๋˜์–ด ์žˆ๋Š” ์ „ ์„ธ๊ณ„์— ์œ„์น˜ํ•œ ๋ฌผ๋ฆฌ์  ๊ฑด๋ฌผ
  • ์Šˆํผ์ปดํ“จํ„ฐ๋ž€?
    • ํ‘œ์ค€ ์ปดํ“จํ„ฐ๋ณด๋‹ค ๋†’์€ ์„ฑ๋Šฅ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ปดํ“จํ„ฐ
    • ์˜ค๋Š˜ ๋‚ ์˜ ์Šˆํผ์ปดํ“จํ„ฐ๋Š” ์ดˆ๋‹น ์ˆ˜์‹ญ์–ต ๊ฐœ๊นŒ์ง€ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋งŒ ๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ๋กœ ๊ตฌ์„ฑ
  • ๋„คํŠธ์›Œํ‚น(Networking) ์ด๋ž€?
    • ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์žฅ๋น„๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์žฅ๋น„

 

โ€ป Reference โ€ป

https://azure.microsoft.com/ko-kr/explore/global-infrastructure (Azure ์ธํ”„๋ผ ์šฉ์–ด ๊ฐ€์ด๋“œ)

https://www.purestorage.com/kr/knowledge/what-is-a-supercomputer.html (์Šˆํผ์ปดํ“จํ„ฐ ๊ด€๋ จ ๋‚ด์šฉ)

https://www.advancedenergy.com/ko-kr/applications/telecom-and-networking/networking/ (์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํ‚น ๊ด€๋ จ ๋‚ด์šฉ)

https://learn.microsoft.com/ko-kr/azure/networking/fundamentals/networking-overview (Azure ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค ๊ด€๋ จ ๋‚ด์šฉ)

 


์ง„์งœ ์ž˜ ๋ชจ๋ฅด๋Š” ์ธํ”„๋ผ ๊ด€๋ จ ๊ธฐ์‚ฌ๋„ ์ฝ์–ด๋ณด๊ธฐ....๋ชจ๋ฅด๋Š” ์šฉ์–ด ๋„ˆ๋ฌด ๋งŽ๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋๋Š”์ง€ ์‚ฌ์‹ค ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด ์กฐ๊ธˆ์”ฉ ์ฐพ์•„๋ณด๊ธด ํ–ˆ๋Š”๋ฐ ์ด๋Ÿฐ ๋‚ด์šฉ๋“ค์ด ์Œ“์ด๋‹ค ๋ณด๋ฉด ์ธํ”„๋ผ์— ๋Œ€ํ•ด์„œ๋„ ์–ด๋Š ์ •๋„ ์•Œ๊ฒŒ ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค.

๋ฐฐ์—ด

์ธ๋ฑ์Šค์™€ ๊ฐ’์„ ์ผ๋Œ€์ผ ๋Œ€์‘ํ•ด ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ณต๊ฐ„์€ ์ธ๋ฑ์Šค์™€ ์ผ๋Œ€์ผ ๋Œ€์‘
  • ์–ด๋–ค ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“  ํ•œ ๋ฒˆ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ → ์ž„์˜ ์ ‘๊ทผ (random access)

 

๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•

# 1. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•
arr = [0,0,0,0,0,0]
arr = [0] * 6

# 2. ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
arr = list(range(6))			# [0,1,2,3,4,5]

# 3. ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
arr = [0 for _ in range(6)]		# [0,0,0,0,0,0]

 

โ€ป ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด ๋Œ€์‹  ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ โ€ป

๋ฐฐ์—ด์ด ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ๋ชจ์Šต

 

๋ฐฐ์—ด๊ณผ ์ฐจ์›

  • ๋ฐฐ์—ด์€ 2์ฐจ์›, 3์ฐจ์›๊ณผ ๊ฐ™์ด ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋กœ๋„ ์‚ฌ์šฉ
  • ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” 1์ฐจ์›์ด๋ฏ€๋กœ ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋„ 1์ฐจ์› ๊ณต๊ฐ„์— ์ €์žฅ
  • ๋ฐฐ์—ด์€ ์ฐจ์›๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์† ํ• ๋‹น

 

1์ฐจ์› ๋ฐฐ์—ด

  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฐ์—ด ํ˜•ํƒœ
  • ๋ฐฐ์—ด์˜ ๋ชจ์Šต = ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

(์™ผ์ชฝ) ๋ฐฐ์—ด์˜ ๋ชจ์Šต (์˜ค๋ฅธ์ชฝ) ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

 

2์ฐจ์› ๋ฐฐ์—ด

  • 1์ฐจ์› ๋ฐฐ์—ด์„ ํ™•์žฅํ•œ ๊ฒƒ
# 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

# ์ €์žฅ๋œ ๊ฐ’ ์ถœ๋ ฅ
print(arr[2][3])

# ์ €์žฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝ
arr[2][3] = 15

# ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ํ™œ์šฉ
arr = [[i]*4 for i in range(3)]

(์™ผ์ชฝ) 2์ฐจ์› ๋ฐฐ์—ด์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ‘œํ˜„ (์˜ค๋ฅธ์ชฝ) ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

 

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

  • ๋ฐฐ์—ด์€ ์ž„์˜ ์ ‘๊ทผ์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋‹จ ํ•œ ๋ฒˆ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)

 

๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

(1) ๋งจ ๋’ค์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ„์น˜์— ์˜ํ–ฅ X
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(1)

(2) ๋งจ ์•ž์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋“ค์„ ๋’ค๋กœ ํ•œ ์นธ์”ฉ ๋ฏธ๋Š” ์—ฐ์‚ฐ ํ•„์š”
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(N)

(3) ์ค‘๊ฐ„์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ํ˜„์žฌ ์‚ฝ์ž…ํ•œ ๋ฐ์ดํ„ฐ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋งŒํผ ๋ฏธ๋Š” ์—ฐ์‚ฐ ํ•„์š”
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(N)

 

๋ฐฐ์—ด์„ ์„ ํƒํ•  ๋•Œ ๊ณ ๋ คํ•  ์ 

  • ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ํ™•์ธ
    • ํ‘œํ˜„ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋Ÿฐํƒ€์ž„์—์„œ ๋ฐฐ์—ด ํ• ๋‹น ์‹คํŒจ
    • ๋ณดํ†ต ์ •์ˆ˜ํ˜• 1์ฐจ์› ๋ฐฐ์—ด์€ 1000๋งŒ๊ฐœ, 2์ฐจ์› ๋ฐฐ์—ด์€ 3000*3000 ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€
  • ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด ๋งŽ์€์ง€ ํ™•์ธ
    • ๋ฐฐ์—ด์€ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฏ€๋กœ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฝ์ž…ํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ

โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

https://www.acmicpc.net/problem/24263

(์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ’€์–ด๋ณด๊ธฐ)

 

๋ฌธ์ œ

 

์˜ค๋Š˜๋„ ์„œ์ค€์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์ˆ˜์—… ์กฐ๊ต๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋น ๊ฐ€ ์ˆ˜์—…ํ•œ ๋‚ด์šฉ์„ ํ•™์ƒ๋“ค์ด ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž.

์ž…๋ ฅ์˜ ํฌ๊ธฐ n์ด ์ฃผ์–ด์ง€๋ฉด MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ œ ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MenOfPassion(A[], n) {
    sum <- 0;
    for i <- 1 to n - 1
        for j <- i + 1 to n
            sum <- sum + A[i] × A[j]; # ์ฝ”๋“œ1
    return sum;
}

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฝ”๋“œ1 ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘˜์งธ ์ค„์— ์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ 3๋ณด๋‹ค ํฌ๋ฉด 4๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1 ์˜ˆ์ œ ์ถœ๋ ฅ1
7 7
1

 

์ฝ”๋“œ1 ์ด 21ํšŒ ์ˆ˜ํ–‰๋˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด n²์— ๋น„๋ก€ํ•œ๋‹ค.

 

์†Œ์Šค ์ฝ”๋“œ
# ๋ฌธ์ œ ์‹œ๊ฐํ™”
n = int(input())
sum = 0
count = 0

for i in range(1,n):
    for j in range(i+1,n+1):
        sum += (i * j)    # ์ฝ”๋“œ 1
        count += 1
        print("{:^4}+({}*{})={:^4} ({:^2}๋ฒˆ ์ˆ˜ํ–‰)\t".format(sum-(i*j),i,j,sum,count), end="   ")
    print()
# ์ •๋‹ต ์ฝ”๋“œ
n = int(input())

print(int(n*(n-1)/2))
print(2)

 

ํ’€์ด

๋ฌธ์ œ ์‹œ๊ฐํ™”

  • ์ฒซ ๋ฒˆ์งธ for๋ฌธ์€ ์ด n๋ฒˆ ์ˆ˜ํ–‰
  • ๋‘ ๋ฒˆ์งธ for๋ฌธ์€ n-i๋ฒˆ ์ˆ˜ํ–‰
    • i=1์ธ ๊ฒฝ์šฐ, n-1๋ฒˆ ์ˆ˜ํ–‰
    • i=2์ธ ๊ฒฝ์šฐ, n-2๋ฒˆ ์ˆ˜ํ–‰
  • ์ˆ˜ํ–‰ ํšŸ์ˆ˜ ๊ณต์‹์„ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์ฒซ ๋ฒˆ์งธ for๋ฌธ์ด ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜ n๊ณผ ๋‘ ๋ฒˆ์งธ for๋ฌธ์ด ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜ n-i๋ฅผ ๊ณฑํ•œ ๊ฐ’ (์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด 2๋กœ ๋‚˜๋ˆ„๊ธฐ)
  • ์œ„์˜ ๊ณต์‹์—์„œ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜์ธ 2๋ฅผ ๋‘ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์‹œ๊ฐ„ ๋ณต์žก๋„(=์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ํšŸ์ˆ˜)๋Š” n*(n-1)/2์ด๋ฏ€๋กœ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋Š” 2

 

์ด์ „ ํฌ์ŠคํŒ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ต์ˆ™ํ•œ ์–ธ์–ด๋กœ for๋ฌธ์ด ์ด ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰๋˜๋Š”์ง€๋ฅผ ์‹œ๊ฐํ™”ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

https://www.acmicpc.net/problem/24263

(์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ’€์–ด๋ณด๊ธฐ)

 

๋ฌธ์ œ

 

์˜ค๋Š˜๋„ ์„œ์ค€์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์ˆ˜์—… ์กฐ๊ต๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋น ๊ฐ€ ์ˆ˜์—…ํ•œ ๋‚ด์šฉ์„ ํ•™์ƒ๋“ค์ด ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž.

์ž…๋ ฅ์˜ ํฌ๊ธฐ n์ด ์ฃผ์–ด์ง€๋ฉด MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ œ ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MenOfPassion(A[], n) {
    sum <- 0;
    for i <- 1 to n
        sum <- sum + A[i]; # ์ฝ”๋“œ1
    return sum;
}

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฝ”๋“œ1 ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘˜์งธ ์ค„์— ์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ 3๋ณด๋‹ค ํฌ๋ฉด 4๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1 ์˜ˆ์ œ ์ถœ๋ ฅ1
7 7
1

 

→ ์ฝ”๋“œ 1์ด 7ํšŒ ์ˆ˜ํ–‰๋˜๊ณ  ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด n์— ๋น„๋ก€ํ•œ๋‹ค.

 

์†Œ์Šค ์ฝ”๋“œ
# ๋ฌธ์ œ ์‹œ๊ฐํ™”
n = int(input())
sum = 0

for i in range(1,n+1):
    sum += i    # ์ฝ”๋“œ 1
    print(sum-i, "+", i, "=", sum, "\t", i,"๋ฒˆ ์ˆ˜ํ–‰")
# ์ •๋‹ต ์ฝ”๋“œ
n = int(input())

print(n)
print(1)

 

ํ’€์ด

๋ฌธ์ œ ์‹œ๊ฐํ™”

  • ๋ฌธ์ œ์—์„œ ์ฝ”๋“œ1์€ ์ด n๋ฒˆ ์ˆ˜ํ–‰
  • ์ž…๋ ฅ์˜ ํฌ๊ธฐ n์„ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
  • ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜์ธ 1์„ ๋‘ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์‹œ๊ฐ„ ๋ณต์žก๋„(=์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ํšŸ์ˆ˜)๋Š” n์ด๋ฏ€๋กœ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋Š” 1

 

์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ญ”์ง€ ๋ชฐ๋ž์„ ๋•Œ๋Š” ๋ฌธ์ œ ์ดํ•ด๊ฐ€ ์•„์˜ˆ ์•ˆ๋๋Š”๋ฐ ๊ฐœ๋…์„ ์•Œ๊ณ  ๋‚˜์„œ ํ‘ธ๋‹ˆ๊นŒ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ผ๋‹จ ๋ฌธ์ œ์˜ ๋‚ด์šฉ์„ ์‹œ๊ฐํ™”ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ์ด ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค!!!

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด "๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ํ•„์š”

→ ํšจ์œจ์ ์œผ๋กœ ํ‘ธ๋Š” ๊ฒƒ์€ ์ œํ•œ ์‹œ๊ฐ„๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ‘ธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

1) ์ ˆ๋Œ€ ์‹œ๊ฐ„ ์ธก์ • : ๋ง ๊ทธ๋Œ€๋กœ ์‹œ๊ฐ„ ์ธก์ •

2) ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก์ • : ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ์ž‘ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๊ฒฐ๊ด๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜ ์ธก์ •

  • ์ž…๋ ฅ ํฌ๊ธฐ : ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•˜๋ฉฐ ์ด์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ N์œผ๋กœ ์ผ๋ฐ˜ํ™”
  • ์ธก์ • ๊ฒฐ๊ณผ : ์ตœ์„ (best) / ๋ณดํ†ต(normal) / ์ตœ์•…(worst)
  • ํ‘œํ˜„ ๋ฐฉ์‹ : ์ ๊ทผ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ

 

์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complexity)

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ๋กœ ์ž…๋ ฅ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜

 

ex) 1์ฐจ์› ๋ฐฐ์—ด ๊ฒ€์ƒ‰

  • ๊ฐ’์„ ๊ฐ€์žฅ ๋นจ๋ฆฌ ์ฐพ๋Š” ๊ฒฝ์šฐ : ๊ฒ€์ƒ‰ ์‹œ์ž‘ ์œ„์น˜์— ์ฐพ์„ ๊ฐ’์ด ๋ฐ”๋กœ ์œ„์น˜ํ•œ ๊ฒฝ์šฐ
  • ๊ฐ’์„ ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ์ฐพ๋Š” ๊ฒฝ์šฐ : ์ฐพ์œผ๋ ค๋Š” ๊ฐ’์ด ์—†๊ฑฐ๋‚˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ

 

์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•

์ž…๋ ฅ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ํšŸ์ˆ˜์˜ ์ถ”์ด๋ฅผ ํ™œ์šฉํ•ด ์‹œ๊ฐ„ ๋ณต์žก๋„ ํ‘œํ˜„

  • ๋น…์˜ค(Big-O, O) ํ‘œ๊ธฐ๋ฒ• : ์ตœ์•…์ผ ๋•Œ ์—ฐ์‚ฐํšŸ์ˆ˜ (์ˆ˜ํ–‰์‹œ๊ฐ„์˜ ์ƒํ•œ)   โ˜… ์ฃผ๋กœ ์‚ฌ์šฉ โ˜…
    • ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•ด์•ผํ•˜๋ฏ€๋กœ ์ฃผ๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ์ธ ๋น…์˜ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ 
  • ๋น…์˜ค๋ฉ”๊ฐ€(Big-Omega, Ω) ํ‘œ๊ธฐ๋ฒ• : ์ตœ์„ ์ผ ๋•Œ ์—ฐ์‚ฐํšŸ์ˆ˜ (์ˆ˜ํ–‰์‹œ๊ฐ„์˜ ํ•˜ํ•œ)
  • ๋น…์„ธํƒ€(Big Theta, Θ) ํ‘œ๊ธฐ๋ฒ• : ๋ณดํ†ต์ผ ๋•Œ ์—ฐ์‚ฐํšŸ์ˆ˜ (์ˆ˜ํ–‰์‹œ๊ฐ„์˜ ์ƒํ•œ๊ณผ ํ•˜ํ•œ)

 

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜

1. O(1) : ์ƒ์ˆ˜

์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์†Œ์š”

ex) ์Šคํƒ์˜ Push / Pop

 

2. O(log N) : ๋กœ๊ทธ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๊ฐ์†Œ

ex) ์ด์ง„ํŠธ๋ฆฌ / ์ˆœ๊ธฐ๋Šฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์žฌ๊ท€

 

3. O(N) : ์„ ํ˜•

์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€ (Nํฌ๊ธฐ๋งŒํผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€)

ex) for๋ฌธ

 

4. O(N log N) : ์„ ํ˜• ๋กœ๊ทธ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋กœ๊ทธ์˜ ๋ฐฐ๋งŒํผ ์ฆ๊ฐ€

ex) ํ€ต ์ •๋ ฌ(Quick Sort) / ํ•ฉ๋ณ‘ ์ •๋ ฌ(Merge Sort) / ํž™ ์ •๋ ฌ(Heap Sort)

 

5. O( N² ) : ๋‹คํ•ญ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ N๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ๋„ N๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€

ex) ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) / ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort) / ์„ ํƒ ์ •๋ ฌ(Selection Sort) / ์ด์ค‘ for๋ฌธ

 

6. O( 2โฟ ) : ์ง€์ˆ˜

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€

ex) ํ”ผ๋ณด๋‚˜์น˜(Fibonacci) ์ˆ˜์—ด


โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

 

์—”๋น„๋””์•„, ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ ์ƒ์„ฑํ•˜๋Š” ‘๋„ค๋ชจํŠธ๋ก -4 340B’ ์ถœ์‹œ..."๋น„์šฉ ๋ฌธ์ œ ํ•ด๊ฒฐํ•œ ์˜คํ”ˆ ์†Œ์Šค ์ตœ๊ฐ• ์„ฑ๋Šฅ" (๋งํฌ)

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
์—”๋น„๋””์•„๊ฐ€ ๋Œ€ํ˜•์–ธ์–ด๋ชจ๋ธ(LLM) ํ•™์Šต์šฉ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„ํ•œ ๋ชจ๋ธ ‘๋„ค๋ชจํŠธ๋ก -4 340B(Nemotron-4 340B)'๋ฅผ ๊ณต๊ฐœํ–ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ์…‹ ์—†์ด๋„ ๋„๋ฉ”์ธ๋ณ„ LLM์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค๋Š” ์„ค๋ช…์ด๋‹ค. ๋„ค๋ชจํŠธ๋ก -4 340B๋Š” 9์กฐ ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์ „ ํ›ˆ๋ จํ–ˆ์œผ๋ฉฐ, 4000ํ† ํฐ์˜ ์ปจํ…์ŠคํŠธ ์ฐฝ์„ ์ œ๊ณตํ•˜๊ณ  50๊ฐœ ์ด์ƒ์˜ ์–ธ์–ด์™€ 40๊ฐœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.
๋„ค๋ชจํŠธ๋ก -4 340B ๋ฒ ์ด์Šค ๋ชจ๋ธ์€ ๋งž์ถคํ˜• ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ ์—ญํ• ์„ ํ•œ๋‹ค. ๋…์  ๋ฐ์ดํ„ฐ์™€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ์…‹๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 
๋„ค๋ชจํŠธ๋ก -4 340B ์ธ์ŠคํŠธ๋ŸญํŠธ ๋ชจ๋ธ์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ฐฉํ•˜๋Š” ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ์—์„œ ๋งž์ถคํ˜• LLM์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•œ๋‹ค. 
๋„ค๋ชจํŠธ๋ก -4 340B ๋ฆฌ์›Œ๋“œ ๋ชจ๋ธ์€ ์ƒ์„ฑ ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ํ–ฅ์ƒํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์œ ์šฉ์„ฑ, ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ, ๋ณต์žก์„ฑ ๋ฐ ์ž์„ธํ•œ ์ •๋„์— ๋”ฐ๋ผ ์‘๋‹ต์„ ํ‰๊ฐ€ํ•ด ์ƒ์„ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ ํ’ˆ์งˆ ํ‘œ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

ํ•ต์‹ฌ ์šฉ์–ด
  • ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋ž€?
    • ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ฐฉํ•œ, ์ธ๊ฐ„์ด ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ
    • ์ƒ์„ฑํ˜• ์ธ๊ณต ์ง€๋Šฅ ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ปดํ“จํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์ƒ์„ฑ
  • ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐฉ์‹
    • ํ†ต๊ณ„์  ๋ถ„ํฌ : ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ธฐ๋ณธ ํ†ต๊ณ„ ๋ถ„ํฌ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ํ•ฉ์„ฑ ์ƒ˜ํ”Œ์„ ์ƒ์„ฑ
    • ๋ชจ๋ธ ๊ธฐ๋ฐ˜ : ์‹ค์ œ ๋ฐ์ดํ„ฐ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ์ด๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ธฐ๊ณ„ ํ•™์Šต ๋ชจ๋ธ์„ ์‚ฌ์šฉ
    • ๋”ฅ๋Ÿฌ๋‹ ๋ฐฉ์‹ : ์ƒ์„ฑํ˜• ๋Œ€๋ฆฝ ๋„คํŠธ์›Œํฌ(GAN), ๋ณ€์ดํ˜• ์˜คํ† ์ธ์ฝ”๋”(VAE) ๋“ฑ์˜ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • ์ปจํ…์ŠคํŠธ ์ฐฝ์ด๋ž€?
    • ํ”„๋กฌํ”„ํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ๋•Œ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์˜ ์ˆ˜
    • ์ปจํ…์ŠคํŠธ ์ฐฝ์ด ํด์ˆ˜๋ก ์ปจํ…์ŠคํŠธ ๋‚ด ํ•™์Šต ์ˆ˜ํ–‰ ๊ธฐ๋Šฅ(in-context learning) ํ–ฅ์ƒ →  ๋” ํฐ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ

 

โ€ป Reference โ€ป

https://aws.amazon.com/ko/what-is/synthetic-data/ (ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋‚ด์šฉ - AWS)

https://blogs.nvidia.co.kr/blog/what-is-synthetic-data-2/ (ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋‚ด์šฉ - NVDIA)

https://www.aitimes.com/news/articleView.html?idxno=152588 (์ปจํ…์ŠคํŠธ ์ฐฝ ๊ด€๋ จ ๊ธฐ์‚ฌ)


์ƒ์„ฑํ˜• AI๋ฅผ ๋„์ž…ํ•  ๋•Œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ์„œ ์„ฑ๋Šฅ์ด ์ขŒ์šฐ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์€ ์ค‘์š”ํ•˜๋‹ค. ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋ธ์ด ์ถœ์‹œ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ๋„ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋‹ˆ...๋„ˆ๋ฌด ์ข‹์€๋ฐ....์‚ฌ๋žŒ์ด ํ•  ์ผ์ด ์ ์  ์ค„์–ด๋“œ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์Šฌํ”„๋‹ค.

+ Recent posts