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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์„ ๋ฌผ์„ ์ง์ ‘ ์ „ํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์นด์นด์˜คํ†ก ์„ ๋ฌผํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ถ•ํ•˜ ์„ ๋ฌผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์นœ๊ตฌ๋“ค์ด ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋‹ฌ์— ๋ˆ„๊ฐ€ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์„์ง€ ์˜ˆ์ธกํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ๋‘ ์‚ฌ๋žŒ ์‚ฌ์ด์— ๋” ๋งŽ์€ ์„ ๋ฌผ์„ ์ค€ ์‚ฌ๋žŒ์ด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ 5๋ฒˆ ์คฌ๊ณ , B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ 3๋ฒˆ ์คฌ๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์—” A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ํ•˜๋‚˜๋„ ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ํฐ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ์ž‘์€ ์‚ฌ๋žŒ์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์„ ๋ฌผ ์ง€์ˆ˜๋Š” ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์ž์‹ ์ด ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์˜ ์ˆ˜์—์„œ ๋ฐ›์€ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 10๊ฐœ๋ผ๋ฉด A์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” -7์ž…๋‹ˆ๋‹ค. B๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 2๊ฐœ๋ผ๋ฉด B์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ A์™€ B๊ฐ€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์ ์ด ์—†๊ฑฐ๋‚˜ ์ •ํ™•ํžˆ ๊ฐ™์€ ์ˆ˜๋กœ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค๋ฉด, ๋‹ค์Œ ๋‹ฌ์—” B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋‘ ์‚ฌ๋žŒ์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋„ ๊ฐ™๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ทœ์น™๋Œ€๋กœ ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ๋‹น์‹ ์€ ์„ ๋ฌผ์„ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์„ ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์นœ๊ตฌ๋“ค์˜ ์ด๋ฆ„์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด friends ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์นœ๊ตฌ๋“ค์ด ์ฃผ๊ณ ๋ฐ›์€ ์„ ๋ฌผ ๊ธฐ๋ก์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด gifts๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‹ค์Œ๋‹ฌ์— ๊ฐ€์žฅ ๋งŽ์€ ์„ ๋ฌผ์„ ๋ฐ›๋Š” ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • 2 ≤ friends์˜ ๊ธธ์ด = ์นœ๊ตฌ๋“ค์˜ ์ˆ˜ ≤ 50
    • friends์˜ ์›์†Œ๋Š” ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๊ธธ์ด๊ฐ€ 10 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • ์ด๋ฆ„์ด ๊ฐ™์€ ์นœ๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • 1 ≤ gifts์˜ ๊ธธ์ด ≤ 10,000
    • gifts์˜ ์›์†Œ๋Š” "A B"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • A๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ B๋Š” ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
    • A์™€ B๋Š” friends์˜ ์›์†Œ์ด๋ฉฐ A์™€ B๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

friends gifts result
["muzi", "ryan", "frodo", "neo"] ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"] 2
["joy", "brad", "alessandro", "conan", "david"] ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"] 4
["a", "b", "c"] ["a b", "b a", "c a", "a c", "a c", "c a"] 0

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
def solution(friends, gifts):
    num = len(friends)

    # ์„ ๋ฌผ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก ๋ฐ ์ ์ˆ˜ ์ƒ์„ฑ
    record = []
    score = [0]*num
    for name in friends:
        take_list = [0]*num
        for give_take in gifts:
            give, take = give_take.split(" ")
            if name == give:
                take_list[friends.index(take)] += 1
                score[friends.index(give)] += 1
            elif name == take:
                score[friends.index(take)] -= 1
        record.append(take_list)    

    # ๊ธฐ๋ก์„ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์ค€ ์นœ๊ตฌ์˜ cnt ๋”ํ•˜๊ธฐ
    # ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์„ ๋ฌผ์ง€์ˆ˜ score๋ฅผ ๋น„๊ต
    cnt = [0]*num
    for i in range(1,num):        
        for j in range(num-1):
            if i > j:
                if record[i][j] > record[j][i]:
                    cnt[i] += 1              
                elif record[i][j] < record[j][i]:
                    cnt[j] += 1
                elif i!=j and record[i][j] == record[j][i]:
                    if score[i] > score[j]:
                        cnt[i] += 1
                    elif score[i] < score[j]:
                        cnt[j] += 1     

    return max(cnt)

 

ํ’€์ด # 1

  • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด record์™€ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” score๋ฅผ ์ •์˜
  • friends ๋ฆฌ์ŠคํŠธ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ์„ ๋ฌผ๊ธฐ๋ก์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
    • friends ๋ฆฌ์ŠคํŠธ์˜ ์ด๋ฆ„์ด ์„ ๋ฌผ์„ ์ค€ ์ด๋ฆ„๊ณผ ๊ฐ™๋‹ค๋ฉด take_list์—์„œ ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ ์ธ๋ฑ์Šค์— +1
    • ์„ ๋ฌผ์„ ์ค€ ๊ฒฝ์šฐ์— ์„ ๋ฌผ์ง€์ˆ˜์— +1 / ์„ ๋ฌผ์„ ๋ฐ›์€ ๊ฒฝ์šฐ์— ์„ ๋ฌผ์ง€์ˆ˜์— -1
  • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ 2์ฐจ์› ๋ฐฐ์—ด record๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ์นœ๊ตฌ๋“ค์ด ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜ ๊ณ„์‚ฐ
    • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์นœ๊ตฌ๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€ ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด i>j ์กฐ๊ฑด ์ถ”๊ฐ€
  • ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ด๊ธด cnt์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

# 2
def solution(friends, gifts):
    record = {}
    for name1 in friends:
        # ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ๊ธฐ๋ก
        record[name1] = [0,{}]
        for name2 in friends:
            if name1 != name2:
                record[name1][1][name2] = 0

    for give_take in gifts:
        give, take = give_take.split(" ")

        record[give][0] += 1            # ์„ ๋ฌผ์ง€์ˆ˜ ๊ณ„์‚ฐ
        record[give][1][take] += 1      # ์„ ๋ฌผ์„ ์ค€ ๊ฒฝ์šฐ +1 

        record[take][0] -= 1            # ์„ ๋ฌผ์ง€์ˆ˜ ๊ณ„์‚ฐ
        record[take][1][give] -= 1      # ์„ ๋ฌผ์„ ๋ฐ›์€ ๊ฒฝ์šฐ -1


    answer = [0] * len(friends)
    for give_name, values in record.items():
        give_idx = friends.index(give_name)
        score = values[0]
        for take_name, cnt in values[1].items():
            # cnt๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด give_name์ด ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์ค€ ๊ฒฝ์šฐ
            if cnt > 0:
                answer[give_idx] += 1
            # cnt๊ฐ€ 0์ด๋ฉด ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ  ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
            elif cnt == 0:
                if score > record[take_name][0]:
                    answer[give_idx] += 1

    return max(answer)

 

ํ’€์ด #2

  • ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ record ์ •์˜
    • record์˜ ํ‚ค๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„
    • record์˜ ๊ฐ’์€ ์„ ๋ฌผ์ง€์ˆ˜์™€ {์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ:์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜}
  • gifts๋ฅผ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ณ„์‚ฐ
    • ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ํ‚ค์—์„œ ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์—๊ฒŒ +1
    • ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ ํ‚ค์—์„œ ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์—๊ฒŒ -1
    • ์„ ๋ฌผ์„ ๋งŽ์ด ์ฃผ์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” + / ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์•˜์„ ๊ฒฝ์šฐ์—๋Š” -
  • record๋ฅผ ๋Œ๋ฉด์„œ ๋ฐ›์•„์•ผํ•˜๋Š” ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๋ฅผ answer์— ์ €์žฅ
    • record์˜ ํ‚ค๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„ / ๊ฐ’์€ ์„ ๋ฌผ์ง€์ˆ˜์™€ {์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ:์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜}
    • ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ธ๋ฑ์Šค๋ฅผ give_index, ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ score์— ์ €์žฅ
    • ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ cnt๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด ์„ ๋ฌผ์„ ๋งŽ์ด ์ค€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ answer + 1
    • cnt๊ฐ€ 0์ด๋ฉด ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ  ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๋น„๊ต
  • ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ด๊ธด answer์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

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

 

"์—…์Šคํ…Œ์ด์ง€ AI ๋ชจ๋ธ, ์ฑ—GPT๋ณด๋‹ค ์ˆ˜ํ•™ ์ž˜ ํ•ด" (๋งํฌ)

 

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
์—…์Šคํ…Œ์ด์ง€๋Š” ์ง€๋‚œํ•ด 11์›” AI ํ•™์Šต ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์‚ฌ ๋ฉ”์Šคํ”„๋ ˆ์†Œ, KT์™€ ์ˆ˜ํ•™ ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ '๋งค์ŠคGPT(๊ฐ€์นญ)'์„ ๊ฐœ๋ฐœํ•œ ๋ฐ” ์žˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ฝ 130์–ต๊ฐœ๋กœ ์ด๋ค„์กŒ๋‹ค. ์ฝด๋‹ค๊ฐ€ ์—…์Šคํ…Œ์ด์ง€์— ์ˆ˜ํ•™ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , KT๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํ•™์Šต์„ ์œ„ํ•œ ์ธํ”„๋ผ๋ฅผ ์ง€์›ํ–ˆ๋‹ค. ์—…์Šคํ…Œ์ด์ง€๋Š” ๋ชจ๋ธ์— ๋…ผ๋ฆฌ์  ์ถ”๋ก ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ธํŠœ๋‹ํ–ˆ๋‹ค. 
๋งค์ŠคGPT๋Š” 'MATH', 'GSM8K' ๋“ฑ ์–ธ์–ด๋ชจ๋ธ ์ˆ˜ํ•™ ๋Šฅ๋ ฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์—…์Šคํ…Œ์ด์ง€์˜ ๋งค์ŠคGPT๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ 'ToRA 13B' ๋“ฑ 130์–ต ์ดํ•˜ ๋ชจ๋ธ ๋ถ€๋ฌธ์—์„œ 1์œ„๋ฅผ ๊ธฐ๋กํ–ˆ๋‹ค. 

 

 

ํ•ต์‹ฌ ์šฉ์–ด
  • ์—…์Šคํ…Œ์ด์ง€ ์ƒ์„ฑํ˜• AI ๊ธฐ์ˆ 
    • ์†”๋ผ
      • ์—…์Šคํ…Œ์ด์ง€์—์„œ ์ž์ฒด ๊ฐœ๋ฐœํ•œ ์ธ๊ณต์ง€๋Šฅ(AI) ์–ธ์–ด ๋ชจ๋ธ
      • ๋งค๊ฐœ๋ณ€์ˆ˜ 107์–ต๊ฐœ๋กœ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ 3์กฐ๊ฐœ ๋„˜๋Š” ํ† ํฐ์œผ๋กœ ๋ฐ์ดํ„ฐ ํ•™์Šต
      • ๊ฑฐ๋Œ€์–ธ์–ด๋ชจ๋ธ(LLM)๊ณผ ์†Œํ˜•์–ธ์–ด๋ชจ๋ธ(SLM)์˜ ์žฅ์  ํ†ตํ•ฉ
    • Document AI
      • ์ธ๊ณต์ง€๋Šฅ(AI) ๊ด‘ํ•™๋ฌธ์ž์ธ์‹(OCR) ์†”๋ฃจ์…˜ (์ด๋ฏธ์ง€ ๋‚ด ๋ฌธ์ž๋ฅผ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์ถ”์ถœ)
      • ์‚ฌ์ „ํ•™์Šต ๋ชจ๋ธ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ํ•™์Šตํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฌธ์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

 

โ€ป Reference โ€ป

https://www.upstage.ai/ (์—…์Šคํ…Œ์ด์ง€ ํ™ˆํŽ˜์ด์ง€)

https://zdnet.co.kr/view/?no=20231214081334 (์—…์Šคํ…Œ์ด์ง€ ์†”๋ผ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://zdnet.co.kr/view/?no=20231025103907 (์—…์Šคํ…Œ์ด์ง€ ๋‹คํ๋จผํŠธ AI ๊ด€๋ จ ๊ธฐ์‚ฌ)

 


 

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

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์–ด๋–ค ๊ฒŒ์ž„์—๋Š” ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ผ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ•๋Œ€ ๊ฐ๊ธฐ๋Š” t์ดˆ ๋™์•ˆ ๋ถ•๋Œ€๋ฅผ ๊ฐ์œผ๋ฉด์„œ 1์ดˆ๋งˆ๋‹ค x๋งŒํผ์˜ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. t์ดˆ ์—ฐ์†์œผ๋กœ ๋ถ•๋Œ€๋ฅผ ๊ฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•œ๋‹ค๋ฉด y๋งŒํผ์˜ ์ฒด๋ ฅ์„ ์ถ”๊ฐ€๋กœ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ์—๋Š” ์ตœ๋Œ€ ์ฒด๋ ฅ์ด ์กด์žฌํ•ด ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ตœ๋Œ€ ์ฒด๋ ฅ๋ณด๋‹ค ์ปค์ง€๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๋„์ค‘ ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋ฉด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋˜๊ณ , ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋Š” ์ˆœ๊ฐ„์—๋Š” ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ๋‹นํ•ด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋‹นํ•˜๊ฑฐ๋‚˜ ๊ธฐ์ˆ ์ด ๋๋‚˜๋ฉด ๊ทธ ์ฆ‰์‹œ ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์—ฐ์† ์„ฑ๊ณต ์‹œ๊ฐ„์ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›์œผ๋ฉด ์ •ํ•ด์ง„ ํ”ผํ•ด๋Ÿ‰๋งŒํผ ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋•Œ, ํ˜„์žฌ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ์บ๋ฆญํ„ฐ๊ฐ€ ์ฃฝ์œผ๋ฉฐ ๋” ์ด์ƒ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

๋ถ•๋Œ€ ๊ฐ๊ธฐ ๊ธฐ์ˆ ์˜ ์‹œ์ „ ์‹œ๊ฐ„, 1์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰์„ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด bandage์™€ ์ตœ๋Œ€ ์ฒด๋ ฅ์„ ์˜๋ฏธํ•˜๋Š” ์ •์ˆ˜ health, ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ ์‹œ๊ฐ„๊ณผ ํ”ผํ•ด๋Ÿ‰์„ ๋‹ด์€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด attacks๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณต๊ฒฉ์ด ๋๋‚œ ์งํ›„ ๋‚จ์€ ์ฒด๋ ฅ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋งŒ์•ฝ ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›๊ณ  ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜์–ด ์ฃฝ๋Š”๋‹ค๋ฉด -1์„ return ํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • bandage๋Š” [์‹œ์ „ ์‹œ๊ฐ„, ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰] ํ˜•ํƒœ์˜ ๊ธธ์ด๊ฐ€ 3์ธ ์ •์ˆ˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • 1 ≤ ์‹œ์ „ ์‹œ๊ฐ„ = t ≤ 50
  • 1 ≤ ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰ = x ≤ 100
  • 1 ≤ ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰ = y ≤ 100
  • 1 ≤ health ≤ 1,000
  • 1 ≤ attacks์˜ ๊ธธ์ด ≤ 100
  • attacks[i]๋Š” [๊ณต๊ฒฉ ์‹œ๊ฐ„, ํ”ผํ•ด๋Ÿ‰] ํ˜•ํƒœ์˜ ๊ธธ์ด๊ฐ€ 2์ธ ์ •์ˆ˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • attacks๋Š” ๊ณต๊ฒฉ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  • attacks์˜ ๊ณต๊ฒฉ ์‹œ๊ฐ„์€ ๋ชจ๋‘ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • 1 ≤ ๊ณต๊ฒฉ ์‹œ๊ฐ„ ≤ 1,000
  • 1 ≤ ํ”ผํ•ด๋Ÿ‰ ≤ 100

 

์ž…์ถœ๋ ฅ ์˜ˆ

bandage health attacks result
[5, 1, 5] 30 [[2, 10], [9, 15], [10, 5], [11, 5]] 5
[3, 2, 7] 20 [[1, 15], [5, 16], [8, 6]] -1
[4, 2, 7] 20 [[1, 15], [5, 16], [8, 6]] -1
[1, 1, 1] 5 [[1, 2], [3, 2]] 3

 

 

 

์†Œ์Šค ์ฝ”๋“œ
def solution(bandage, health, attacks):
    t, x, y = bandage
    max = health
    success = 0

    # ๊ณต๊ฒฉ ๋‹นํ•œ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ
    attack_times = []
    for attack in attacks:
        attack_times.append(attack[0])

    # ๋งˆ์ง€๋ง‰ ๊ณต๊ฒฉ๊นŒ์ง€ ์ƒ์กด์—ฌ๋ถ€ ํ™•์ธ
    for now in range(1,attack_times[-1]+1):
        # ๊ณต๊ฒฉ ๋‹นํ•˜๋ฉด ์ฒด๋ ฅ๊ฐ์†Œ ๋ฐ ์—ฐ์†์„ฑ๊ณต ์ดˆ๊ธฐํ™”
        if now in attack_times:
            idx = attack_times.index(now)
            health -= attacks[idx][1]
            success = 0

            # ๊ณต๊ฒฉ ๋‹นํ•ด์„œ ์ฒด๋ ฅ์ด ๋ฐ”๋‹ฅ๋‚˜๋Š” ๊ฒฝ์šฐ
            if health <= 0:
                return -1
                break

        # ๊ณต๊ฒฉ ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ๋ถ•๋Œ€์Šคํ‚ฌ
        else:
            # ์ฒด๋ ฅ์ด ์ตœ๋Œ€์น˜๋ณด๋‹ค ์ž‘์œผ๋ฉด ํšŒ๋ณต / ์ตœ๋Œ€์น˜์ด๊ฑฐ๋‚˜ ํฌ๋ฉด ์ตœ๋Œ€์น˜๋กœ ์ดˆ๊ธฐํ™”
            # ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์—ฐ์† ์„ฑ๊ณต
            if health < max:
                health += x
            else:
                health = max

            success += 1
            if success == t:
                health += y
                success = 0    

    return health

 

ํ’€์ด

  • ๋ถ•๋Œ€๊ฐ๊ธฐ ์Šคํ‚ฌ ๋ฆฌ์ŠคํŠธ์—์„œ ์‹œ์ „ ์‹œ๊ฐ„, ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰ ์„ค์ •
    • t = ์‹œ์ „ ์‹œ๊ฐ„ (๋ถ•๋Œ€๊ฐ๊ธฐ ์Šคํ‚ฌ์˜ ์ตœ๋Œ€ ์ง„ํ–‰์‹œ๊ฐ„)
    • x = ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰ (1์ดˆ๋™์•ˆ ํšŒ๋ณต๋Ÿ‰)
    • y = ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰ (t์‹œ๊ฐ„๋งŒํผ ๋ถ•๋Œ€๊ฐ๊ธฐ ์Šคํ‚ฌ์„ ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€ ํšŒ๋ณต)
  • ์ฒด๋ ฅ์˜ ์ตœ๋Œ€์น˜ max, ์—ฐ์†์„ฑ๊ณต ํšŸ์ˆ˜ succes ์„ค์ •
  • ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ๋‹นํ•œ ์‹œ๊ฐ„์„ attack_times์— ์ถ”๊ฐ€
  • ๋งˆ์ง€๋ง‰ ๊ณต๊ฒฉ์‹œ๊ฐ„๊นŒ์ง€ for๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ณต๊ฒฉ์—ฌ๋ถ€ ํ™•์ธ
    • ํ˜„์žฌ ์‹œ๊ฐ„์ด ๊ณต๊ฒฉ๋‹นํ•œ ์‹œ๊ฐ„ attack_times์— ์žˆ์œผ๋ฉด ์ฒด๋ ฅ๊ฐ์†Œ ๋ฐ ์—ฐ์†์„ฑ๊ณต ์ดˆ๊ธฐํ™”
      • ๊ณต๊ฒฉ์„ ๋‹นํ•ด์„œ ์ฒด๋ ฅ์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๊ณ  ์ข…๋ฃŒ
    • ๊ณต๊ฒฉ๋‹นํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋ถ•๋Œ€๊ฐ๊ธฐ๋กœ ์ฒด๋ ฅ ํšŒ๋ณต
      • ์ฒด๋ ฅ์ด max๋ณด๋‹ค ์ž‘์œผ๋ฉด ํšŒ๋ณตํ•˜๊ณ  max๋ณด๋‹ค ํฌ๋ฉด max๋กœ ์ดˆ๊ธฐํ™”
      • ์—ฐ์† ์„ฑ๊ณตํ–ˆ์„ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ํšŒ๋ณต

 

 

์กฐ๊ฑด์ด ๋งŽ๊ธด ํ•œ๋ฐ ๋ณต์žกํ•˜์ง€๋Š” ์•Š์•„์„œ ํ•˜๋‚˜์”ฉ ์ƒ๊ฐํ•˜๋ฉด์„œ ํ‘ธ๋‹ˆ๊นŒ ์˜์™ธ๋กœ ๊ธˆ๋ฐฉ ํ’€๋ฆฐ ๋ฌธ์ œ์˜€๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋Š” ์žฌ๋ฏธ์žˆ๋Š” ๋ฌธ์ œ ์ƒํ™ฉ์ด ๋งŽ์•„์„œ ์ข‹๋‹ค..ใ…Žใ…Ž....

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์ง€๋‚˜๋‹ค๋‹ˆ๋Š” ๊ธธ์„ 'O', ์žฅ์• ๋ฌผ์„ 'X'๋กœ ๋‚˜ํƒ€๋‚ธ ์ง์‚ฌ๊ฐํ˜• ๊ฒฉ์ž ๋ชจ์–‘์˜ ๊ณต์›์—์„œ ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์‚ฐ์ฑ…์„ ํ•˜๋ คํ•ฉ๋‹ˆ๋‹ค. ์‚ฐ์ฑ…์€ ๋กœ๋ด‡ ๊ฐ•์•„์ง€์— ๋ฏธ๋ฆฌ ์ž…๋ ฅ๋œ ๋ช…๋ น์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

["๋ฐฉํ–ฅ ๊ฑฐ๋ฆฌ", "๋ฐฉํ–ฅ ๊ฑฐ๋ฆฌ" … ]
์˜ˆ๋ฅผ ๋“ค์–ด "E 5"๋Š” ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ํ˜„์žฌ ์œ„์น˜์—์„œ ๋™์ชฝ์œผ๋กœ 5์นธ ์ด๋™ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๊ณต์›์„ ๋ฒ—์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ ์ค‘ ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์œ„ ๋‘ ๊ฐ€์ง€์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ํ•ด๋‹น๋œ๋‹ค๋ฉด, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” ํ•ด๋‹น ๋ช…๋ น์„ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๊ณต์›์˜ ๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ W, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ H๋ผ๊ณ  ํ•  ๋•Œ, ๊ณต์›์˜ ์ขŒ์ธก ์ƒ๋‹จ์˜ ์ขŒํ‘œ๋Š” (0, 0), ์šฐ์ธก ํ•˜๋‹จ์˜ ์ขŒํ‘œ๋Š” (H - 1, W - 1) ์ž…๋‹ˆ๋‹ค.

๊ณต์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด park, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด routes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ๋ชจ๋“  ๋ช…๋ น์„ ์ˆ˜ํ–‰ ํ›„ ๋†“์ธ ์œ„์น˜๋ฅผ [์„ธ๋กœ ๋ฐฉํ–ฅ ์ขŒํ‘œ, ๊ฐ€๋กœ ๋ฐฉํ–ฅ ์ขŒํ‘œ] ์ˆœ์œผ๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • 3 ≤ park์˜ ๊ธธ์ด ≤ 50
    • 3 ≤ park[i]์˜ ๊ธธ์ด ≤ 50
      • park[i]๋Š” ๋‹ค์Œ ๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์‹œ์ž‘์ง€์ ์€ ํ•˜๋‚˜๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
        • S : ์‹œ์ž‘ ์ง€์ 
        • O : ์ด๋™ ๊ฐ€๋Šฅํ•œ ํ†ต๋กœ
        • X : ์žฅ์• ๋ฌผ
    • park๋Š” ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ž…๋‹ˆ๋‹ค.
  • 1 ≤ routes์˜ ๊ธธ์ด ≤ 50
    • routes์˜ ๊ฐ ์›์†Œ๋Š” ๋กœ๋ด‡ ๊ฐ•์•„์ง€๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • ๋กœ๋ด‡ ๊ฐ•์•„์ง€๋Š” routes์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • routes์˜ ์›์†Œ๋Š” "op n"๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, op๋Š” ์ด๋™ํ•  ๋ฐฉํ–ฅ, n์€ ์ด๋™ํ•  ์นธ์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
      • op๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€์ค‘ ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
        • N : ๋ถ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
        • S : ๋‚จ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
        • W : ์„œ์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
        • E : ๋™์ชฝ์œผ๋กœ ์ฃผ์–ด์ง„ ์นธ๋งŒํผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
      • 1 ≤ n ≤ 9

 

์ž…์ถœ๋ ฅ ์˜ˆ

park routes result
["SOO","OOO","OOO"] ["E 2","S 2","W 1"] [2,1]
["SOO","OXX","OOO"] ["E 2","S 2","W 1"] [0,1]
["OSO","OOO","OXO","OOO"] ["E 2","S 3","W 1"] [0,0]

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
def solution(park, routes):
    # x = ์—ด ๋ฒˆํ˜ธ / y = ํ–‰ ๋ฒˆํ˜ธ
    # ํ–‰์—ด์˜ ์ตœ๋Œ€๊ฐ’ ์„ค์ •
    x_max = len(park[0])
    y_max = len(park)
    
    # ์‹œ์ž‘ ์œ„์น˜ ์ฐพ๊ธฐ
    x = 0
    y = 0
    for i in range(y_max):          # i = ํ–‰ ๋ฒˆํ˜ธ = y๊ฐ’
        for j in range(x_max):      # j = ์—ด ๋ฒˆํ˜ธ = x๊ฐ’
            if park[i][j] == 'S':
                x = j
                y = i
                break
    
    # ์ขŒํ‘œ ์ด๋™
    for route in routes:
        # ๋ฐฉํ–ฅ๊ณผ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅ
        direction, distance = route.split(" ")

        # ํ˜„์žฌ์˜ ์ขŒํ‘œ๋ฅผ ์ž„์‹œ๋กœ ์ด๋™
        xx = x
        yy = y

        # ํ•œ ์นธ์”ฉ ์ด๋™ํ•˜๋ฉด์„œ ๊ณต์›์„ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚˜๋Š”์ง€ ํ™•์ธ
        # step์ด ์ด๋™๊ฑฐ๋ฆฌ์™€ ๊ฐ™์•„์ง€๋ฉด ํ˜„์žฌ ์ขŒํ‘œ๋ฅผ ์ž„์‹œ ์ขŒํ‘œ๋กœ ๋ณ€๊ฒฝ
        for step in range(1, int(distance)+1):
            # ๋™์ชฝ์œผ๋กœ ์ด๋™
            if direction == 'E' and xx != x_max-1 and park[yy][xx+1] != 'X':
                xx += 1
                if step == int(distance):
                    x = xx
            # ์„œ์ชฝ์œผ๋กœ ์ด๋™
            elif direction == 'W' and xx != 0 and park[yy][xx-1] != 'X':
                xx -= 1
                if step == int(distance):
                    x = xx
            # ๋‚จ์ชฝ์œผ๋กœ ์ด๋™
            elif direction == 'S' and yy != y_max-1 and park[yy+1][xx] != 'X':
                yy += 1
                if step == int(distance):
                    y = yy
            # ๋ถ์ชฝ์œผ๋กœ ์ด๋™
            elif direction == 'N' and yy != 0 and park[yy-1][xx] != 'X':
                yy -= 1
                if step == int(distance):
                    y = yy

    return [y, x]

 

ํ’€์ด # 1

  • ์ขŒํ‘œ์—์„œ ๊ณ ๋ ค์‚ฌํ•ญ
    • x = ์—ด ๋ฒˆํ˜ธ / y = ํ–‰ ๋ฒˆํ˜ธ
    • x_max = ์—ด์˜ ๊ธธ์ด / y_max = ํ–‰์˜ ๊ธธ์ด
  • ์‹œ์ž‘ ์œ„์น˜ ์ฐพ๊ธฐ
    • i = ํ–‰ ๋ฒˆํ˜ธ = y๊ฐ’ / j = ์—ด ๋ฒˆํ˜ธ / x๊ฐ’
    • ์œ„์˜ ๋‚ด์šฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์‹œ์ž‘์  S ์ฐพ๊ธฐ
  • ์ขŒํ‘œ ์ด๋™
    • ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ž์˜ ๊ฐ’์€ ๋ฐฉํ–ฅ(direction), ๋’ค์˜ ๊ฐ’์€ ์ด๋™๊ฑฐ๋ฆฌ(distance)
    • ํ˜„์žฌ ์ขŒํ‘œ์™€ ๋™์ผํ•œ ์ž„์‹œ ์ขŒํ‘œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋™ (์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”)
      • ๋ฐฉํ–ฅ ํ™•์ธ
        • E = ๋™์ชฝ : x์ขŒํ‘œ + 1
        • W = ์„œ์ชฝ : x์ขŒํ‘œ - 1
        • S = ๋‚จ์ชฝ : y์ขŒํ‘œ + 1
        • N = ๋ถ์ชฝ : y์ขŒํ‘œ -1
      • ํ˜„์žฌ ์ขŒํ‘œ๊ฐ€ ํ–‰์ด๋‚˜ ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฒ—์–ด๋‚˜๋Š”์ง€ ํ™•์ธ
      • ํ•œ ์นธ ์ด๋™ํ–ˆ์„ ๋•Œ ์žฅ์• ๋ฌผ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
    • ๊ฐ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•œ ๊ฒฝ์šฐ ์ž„์‹œ ์ขŒํ‘œ๋ฅผ ํ•œ ์นธ ์ด๋™
    • step์ด ์ด๋™ ๊ฑฐ๋ฆฌ์— ๋„๋‹ฌํ•˜๋ฉด ํ˜„์žฌ ์ขŒํ‘œ๋ฅผ ์ž„์‹œ ์ขŒํ‘œ๋กœ ๋ฐ”๊พธ๊ธฐ
    • x๋Š” ์—ด ๋ฒˆํ˜ธ, y๋Š” ํ–‰ ๋ฒˆํ˜ธ์ด๋ฏ€๋กœ [y,x] ๋ฅผ ๋ฐ˜ํ™˜

 

# 2
def solution(park, routes):
    # ํ–‰์—ด์˜ ์ตœ๋Œ€๊ฐ’ ์„ค์ •
    w, h = len(park[0]), len(park)

    # ๋ฐฉํ–ฅ๋ณ„๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅ
    move = {"N":(-1,0), "S":(1,0), "W":(0,-1), "E":(0,1)}
    
    # ์‹œ์ž‘ ์œ„์น˜ ์ฐพ๊ธฐ
    x, y = 0, 0
    for i in range(h):
        for j in range(w):
            if park[i][j] == "S":
                x, y = i, j
                break
        
    # ์ขŒํ‘œ ์ด๋™
    for route in routes:
        # ๋ฐฉํ–ฅ๊ณผ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅ
        direction, distance = route.split(" ")

        # ํ˜„์žฌ์˜ ์ขŒํ‘œ๋ฅผ ์ €์žฅํ•ด์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ•ด๋‹น๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
        dx, dy = x, y
        
        for idx in range(int(distance)):
            # ์ด๋™ํ•  ์œ„์น˜
            nx = x + move[direction][0]
            ny = y + move[direction][1]
        
            if 0 <= nx <= h-1 and 0 <= ny <= w-1 and (park[nx][ny]!="X"):
                x, y = nx, ny                    
            else:
                x, y = dx, dy
                break

    return [x,y]

 

ํ’€์ด #2

  • ์œ„์˜ ํ’€์ด์™€ ๋ฐ˜๋Œ€๋กœ x๋ฅผ ํ–‰ ๋ฒˆํ˜ธ, y๋ฅผ ํ–‰ ๋ฒˆํ˜ธ๋กœ ์ƒ๊ฐํ•œ ํ’€์ด
  • ํ‚ค๊ฐ€ ์ด๋™ ๋ฐฉํ–ฅ, ๊ฐ’์ด ์ด๋™ํ•ด์•ผํ•˜๋Š” ๊ฑฐ๋ฆฌ์ธ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ
    • E = ๋™์ชฝ : y์ขŒํ‘œ + 1
    • W = ์„œ์ชฝ : y์ขŒํ‘œ - 1
    • S = ๋‚จ์ชฝ : x์ขŒํ‘œ + 1
    • N = ๋ถ์ชฝ : x์ขŒํ‘œ -1
  • ์‹œ์ž‘ ์œ„์น˜ ์ฐพ๊ธฐ
  • ํ˜„์žฌ ์ขŒํ‘œ๋ฅผ dx, dy์— ์ €์žฅ (์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”)
  • ์ž„์‹œ ์ขŒํ‘œ nx, ny๋ฅผ ๋งŒ๋“ค์–ด ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๊ฒฝ์šฐ์— ํ˜„์žฌ ์ขŒํ‘œ๋ฅผ ๋ณ€๊ฒฝ

 

 

x์ขŒํ‘œ, y์ขŒํ‘œ ๋‚˜์˜ค๋ฉด ์ผ๋‹จ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‹œ์ž‘....๋‹ค์‹œ ์ฐจ๊ทผ์ฐจ๊ทผ ์ƒ๊ฐํ•ด๋ณด๊ฒ ๋‹ค๋ฉฐ ์ฝ”๋“œ 12938091๋ฒˆ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ ๊ฐœ์ธ์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ํ’€์ด๊ฐ€ ์ข€ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ’€์ด๋Š” ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฅด์ง€๋งŒ ๋จธ๋ฆฌ๊ฐ€ ๋”ฐ๋ผ์ฃผ์ง€ ์•Š์•„์„œ ํž˜๋“ค์—ˆ๋‹ค...ํœด...์–ด์จŒ๋“  ํ’€์—ˆ์œผ๋‹ˆ๊นŒ ์‰ฌ์–ด์•ผ๊ฒ ๋‹ค.๊ณต์› ์‚ฐ์ฑ…์„ ์™œ์ด๋ ‡๊ฒŒ ๋นก์„ธ๊ฒŒ ํ•˜์‹œ๋Š” ๊ฑฐ์—์š”... ๐Ÿƒ๐Ÿป ๐Ÿƒ๐Ÿป

[์‹ ๋…„ ํŠน์ง‘] 2024๋…„ ์ง€์ผœ๋ณผ 8๊ฐ€์ง€ AI ์ด์Šˆ (1)... AI ์—์ด์ „ํŠธ, ์–ด๋””๊นŒ์ง€ ์ง„ํ™”ํ• ๊นŒ (๋งํฌ)

[์‹ ๋…„ ํŠน์ง‘] 2024๋…„ ์ง€์ผœ๋ณผ 8๊ฐ€์ง€ AI ์ด์Šˆ (2)...'GPT-5', AGI์— ์–ผ๋งˆ๋‚˜ ๊ทผ์ ‘ํ• ๊นŒ (๋งํฌ)

 

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
2023๋…„์—๋Š” ์ธ๊ณต์ง€๋Šฅ(AI)์ด ์‚ฌ๋žŒ๋“ค์˜ ํ˜ธ๊ธฐ์‹ฌ์„ ์ž๊ทนํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ด๋Œ์—ˆ๋‹ค๋ฉด 2024๋…„์€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ๊ตฌ์ฒด์ ์ธ ์„ฑ๊ณต์‚ฌ๋ก€๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํ•ด๊ฐ€ ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
1. '์ฑ—๋ด‡ ๋ํŒ์™•' AI ์—์ด์ „ํŠธ, ์–ด๋””๊นŒ์ง€ ์ง„ํ™”ํ• ๊นŒ
2. ์˜จ๋””๋ฐ”์ด์Šค AI, ์ œ 2์˜ ์—”๋น„๋””์•„ ๋ถ ์ผ์–ด๋‚ ๊นŒ
3. ์˜คํ”ˆ ์†Œ์Šค LLM, ํ์‡„ํ˜• ์„ฑ๋Šฅ ๋”ฐ๋ผ์žก์„๊นŒ
4. ์ €์ž‘๊ถŒ๊ณผ ์„ ๊ฑฐ, AI์— ์–ด๋–ค ์˜ํ–ฅ ๋ฏธ์น ๊นŒ
5. GPT-5, AGI์— ์–ผ๋งˆ๋‚˜ ๊ทผ์ ‘ํ• ๊นŒ
6. ์• ํ”Œ, AI์—์„œ๋„ ์ฃผ๋„๊ถŒ ์žก์„๊นŒ
7. ์ƒˆ ํ—ค๋“œ์…‹์˜ ๋“ฑ์žฅ, ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์„๊นŒ
8. ๊ตญ๋‚ด ํ‚ฌ๋Ÿฌ AI ์„œ๋น„์Šค ๋“ฑ์žฅํ• ๊นŒ

 

ํ•ต์‹ฌ ์šฉ์–ด
  • AI ์—์ด์ „ํŠธ๋ž€?
    • ํ™˜๊ฒฝ์„ ์ธ์‹ํ•˜๊ณ  ํŠน์ • ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฐœ์ฒด
    • ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜ ๋˜๋Š” ๋ฌผ๋ฆฌ์  ์—”ํ‹ฐํ‹ฐ๋กœ ์ธ๊ณต์ง€๋Šฅ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•
  • AI์˜ Capabilities ์ค‘์‹ฌ ์„ธ ๊ฐ€์ง€ ๋ ˆ๋ฒจ
    • Level1. ANI(Artificial Narrow Intelligence) : ๋‹จ์ผ ํƒœ์Šคํฌ๋ฅผ ์‚ฌ๋žŒ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰
    • Level2. AGI(Artificial General Intelligence) : ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ๋žŒ๋ณด๋‹ค ๋˜‘๋˜‘ํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ ์ˆ˜ํ–‰
    • Level3. ASI(Artificial Super Intelligence) : ๋ชจ๋“  ๋ถ„์•ผ์—์„œ ์‚ฌ๋žŒ์„ ์ดˆ์›”ํ•˜์—ฌ ํƒœ์Šคํฌ ์ˆ˜ํ–‰

 

โ€ป Reference โ€ป

https://botpress.com/ko/blog/what-is-an-ai-agent-discover-the-future-of-artificial-intelligence (AI ์—์ด์ „ํŠธ ์„ค๋ช…)

https://yengineeer.tistory.com/23 (์˜จ๋””๋ฐ”์ด์Šค AI ๊ด€๋ จ ๊ธฐ์‚ฌ ๋ฐ ์„ค๋ช…)

https://zdnet.co.kr/view/?no=20240102092312 (์˜คํ”ˆ์†Œ์Šค LLM์˜ ์ €์ž‘๊ถŒ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://tech.kakaoenterprise.com/189 (AGI ๊ฐœ๋… ๋ฐ ๊ธฐ๋Œ€์™€ ์šฐ๋ ค)

https://www.itworld.co.kr/news/311316 (์• ํ”Œ์˜ ์ƒ์„ฑํ˜• AI ๊ด€๋ จ ๊ธฐ์‚ฌ)


 

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

"๋ง๋„ ๋งŽ๊ณ  ํƒˆ๋„ ๋งŽ์•˜๋˜ 2023๋…„" IT ์—…๊ณ„ 10๋Œ€ ์‚ฌ๊ฑด ์‚ฌ๊ณ  (๋งํฌ)

 

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
2023๋…„ IT๋ถ„์•ผ์—์„œ ์ผ์–ด๋‚˜ ์—ฌ๋Ÿฌ ์‚ฌ๊ฑด์€ ๋ฌธํ™”์™€ ์ง€๋ฆฌ, ๊ธฐ์ˆ  ๊ทธ ์ž์ฒด์˜ ๊ทผ๋ณธ์ ์ธ ๋ณ€ํ™”๋ฅผ ์กฐ๋ช…ํ•œ๋‹ค.
1. ํ•ด๊ณ ์™€ ๋ณต๊ท€, ์ƒ˜์•ŒํŠธ๋จผ๊ณผ ์˜คํ”ˆ AI์˜ ์ถ•์ถœ ์†Œ๋™
2. ๋ฏธ๊ตญ ๋ฒ•๋ฌด๋ถ€ vs. ๊ตฌ๊ธ€ : 20๋…„๋งŒ์˜ ์ตœ๋Œ€ ๋ฐ˜๋…์  ๋ถ„์Ÿ
3. ์•„๋งˆ์กด์—์„œ ์‹œ์ž‘๋œ ์ •๋ฆฌ ํ•ด๊ณ  ๋ฐ”๋žŒ
4. ์—„๊ฒฉํ•ด์ง„ ๊ทœ์ œ, 200์–ต ๋‹ฌ๋Ÿฌ ๊ทœ๋ชจ์˜ ์–ด๋„๋น„-ํ”ผ๊ทธ๋งˆ ์ธ์ˆ˜ ๋ถˆ๋ฐœ
5. ๋ฌด๋ธŒ์ž‡ ํ•ดํ‚น : ๊ณ„์†๋˜๋Š” ๊ณต๊ฒฉ๊ณผ CISO์˜ ์ •๋ฐ€ ์กฐ์‚ฌ
6. ์‚ฌ์ด๋ฒ„ ๊ณต๊ฐ„์œผ๋กœ ํ™•๋Œ€๋œ ์ด์Šค๋ผ์—˜ ํ•˜๋งˆ์Šค ๋ถ„์Ÿ
7. ๋ฏธ๊ตญ, ๋Œ€ ์ค‘๊ตญ ๋ฐ˜๋„์ฒด ์ˆ˜์ถœ ๊ทœ์ œ ํ™•๋Œ€
8. ์• ํ”Œ ๋น„์ „ ํ”„๋กœ : ๋ฐฑ ํˆฌ ๋” ํ“จ์ฒ˜
9. '์›๊ฒฉ ๊ทผ๋ฌด์˜ ๋Œ€๋ช…์‚ฌ' ์คŒ์˜ ์‚ฌ๋ฌด์‹ค ๋ณต๊ท€ ์‹œํ–‰
10. AI๊ฐ€ ์ธ๋ฅ˜ ๋ฉธ์ข…์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋ผ๋Š” IT ์ฑ…์ž„์ž๋“ค์˜ ๊ฒฝ๊ณ 

 

โ€ป Reference โ€ป

https://www.itworld.co.kr/news/314256 (์ƒ˜์•ŒํŠธ๋จผ์˜ ํ•ด๊ณ ์™€ ๋ณต๊ท€ ์ „๋ง ๊ธฐ์‚ฌ)

https://www.itworld.co.kr/news/314376 (๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์—”์ง„ ๋ฐ˜๋…์  ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://zdnet.co.kr/view/?no=20230119083409 (์•„๋งˆ์กด ์ •๋ฆฌํ•ด๊ณ  ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://zdnet.co.kr/view/?no=20231219084254 (์–ด๋„๋น„-ํ”ผ๊ทธ๋งˆ ์ธ์ˆ˜ ๋ถˆ๋ฐœ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://zdnet.co.kr/view/?no=20230828122317 (๋ฌด๋ธŒ์ž‡ ์ทจ์•ฝ์  ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•œ ์‚ฌ๊ณ ์œจ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://zdnet.co.kr/view/?no=20231026104832 (์‚ฌ์ด๋ฒ„ ๊ณต๊ฐ„์œผ๋กœ ํ™•๋Œ€๋œ ๋ถ„์Ÿ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://www.itworld.co.kr/news/291673 (์ค‘๊ตญ๊ณผ ๋ฏธ๊ตญ์˜ IT ๋ฌด์—ญ ๋ถ„์Ÿ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://www.itworld.co.kr/news/319470 (์• ํ”Œ ๋น„์ „ ํ”„๋กœ ์ถœ์‹œ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://www.itworld.co.kr/news/303109 (์คŒ์˜ ์‚ฌ๋ฌด์‹ค ๋ณต๊ท€ ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://www.itworld.co.kr/news/292591 (AI ๋ฐœ์ „์— ์ธ๋ฅ˜ ๋ฉธ์ข… ๊ฒฝ๊ณ  ๊ด€๋ จ ๊ธฐ์‚ฌ)


 

2023๋…„๋™์•ˆ ์ผ์–ด๋‚ฌ๋˜ ์‚ฌ๊ฑด ์‚ฌ๊ณ ๋ฅผ ๋Œ์•„๋ณด๋ฉด์„œ ๊ธฐ์‚ฌ๋ฅผ ์ฝ์–ด๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ๋” ๋น ๋ฅด๊ฒŒ ๋Š๊ปด์ง„๋‹ค. ๋‹ค์–‘ํ•œ ์‚ฌ๊ฑด ์‚ฌ๊ณ ๋“ค์„ ๋ณด๋ฉด์„œ ๊ธฐ์‚ฌ์— ์ ํžŒ ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ์„ฑํ˜• AI์˜ ๋น„์ค‘์ด ๋†’๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ชฐ๋ž๋˜ ์‚ฌ๊ฑด๋“ค๋„ ์žˆ์—ˆ๋Š”๋ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ๋ฅผ ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด๋ฉด์„œ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋‚ด๋…„ '์†์•ˆ์— AI' ๋ณธ๊ฒฉํ™”…์‚ผ์„ฑ·ํ€„์ปด ์ฃผ๋„ (๋งํฌ)

 

๊ธฐ์‚ฌ ๋‚ด์šฉ ์š”์•ฝ
์Šค๋งˆํŠธํฐ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑํ˜• AI๋ฅผ ์‹คํ–‰ํ•˜๋Š” '์˜จ๋””๋ฐ”์ด์Šค(On device) AI'๊ธฐ์ˆ ์ด ํ™•์‚ฐ๋˜๋ฉฐ ๋‚ด๋…„๋ถ€ํ„ฐ '์ธ๊ณต์ง€๋Šฅ(AI) ์Šค๋งˆํŠธํฐ' ์‹œ๋Œ€๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์—ด๋ฆฐ๋‹ค. ์˜จ๋””๋ฐ”์ด์Šค AI๋ž€ ์Šค๋งˆํŠธํฐ์ด๋‚˜ ๋…ธํŠธ๋ถ, ๊ฐ€์ „์ œํ’ˆ ๋“ฑ ๋‚ด๋ถ€์— AI ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š”
๋ณ„๋„ ๋ฐ˜๋„์ฒด๋ฅผ ํƒ‘์žฌํ•ด ๊ธฐ๊ธฐ ์ž์ฒด์—์„œ AI ์ถ”๋ก ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ์—†์•  ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋ณด์•ˆ ์šฐ๋ ค๋„ ์ ๋‹ค.
์˜จ๋””๋ฐ”์ด์Šค AI๊ฐ€ ๋ณดํŽธํ™”๋˜๋ฉด ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ(MS)๋‚˜ ๊ตฌ๊ธ€ ๋“ฑ ์ƒ์„ฑํ˜• AI ์„œ๋น„์Šค๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋น…ํ…Œํฌ๋Š” ์ž์‚ฌ ๊ธฐ์ˆ ์„ ์„ธ๊ณ„์ ์œผ๋กœ ํ™•์‚ฐํ•  ์ธํ”„๋ผ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ์˜จ๋””๋ฐ”์ด์Šค AI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ๊ฐ ๊ธฐ๊ธฐ๋กœ AI ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋น…ํ…Œํฌ๋Š” ์ธํ”„๋ผ ํˆฌ์ž ๋ถ€๋‹ด์„ ์ค„์ด๋ฉด์„œ๋„ ์ž์‚ฌ AI ์„œ๋น„์Šค๋ฅผ ๋ณด๋‹ค ์›ํ™œํ•˜๊ฒŒ ๊ณต๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์Šค๋งˆํŠธํฐ ๊ธฐ์—… ์ž…์žฅ์—์„œ๋Š” ์ง€๋‚œ ๋ช‡๋…„๊ฐ„ ์„ฑ์ˆ™๊ธฐ์— ์ ‘์–ด๋“  ์Šค๋งˆํŠธํฐ ๋ถ„์•ผ์— 'AI ์Šค๋งˆํŠธํฐ'์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋„์ฒด ์ œ์กฐ์‚ฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ AI ์—ฐ์‚ฐ ๊ธฐ๋Šฅ์„ ๋”ํ•œ ์ œํ’ˆ์œผ๋กœ ํŒ๋งค๋Ÿ‰์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋™์‹œ์— ๋ณด๋‹ค ๊ณ ์„ฑ๋Šฅ·๊ณ ์šฉ๋Ÿ‰ ๋ฐ˜๋„์ฒด์˜ ํŒ๋งค๋„ ์ด‰์ง„ํ•  ๊ธฐํšŒ๋‹ค.

 

 

ํ•ต์‹ฌ ์šฉ์–ด
  • ์˜จ๋””๋ฐ”์ด์Šค(On-Device) AI๋ž€?
    • ๊ธฐ์กด ์ธ๊ณต์ง€๋Šฅ(AI) ๊ธฐ์ˆ ์€ ์Šค๋งˆํŠธ๊ธฐ๊ธฐ์˜ ์ •๋ณด๋ฅผ ์ค‘์•™ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋กœ ์ „์†กํ•ด ๋ถ„์„ ํ›„ ๋‹ค์‹œ ๊ธฐ๊ธฐ๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹
    • ์˜จ๋””๋ฐ”์ด์Šค(On-Device) AI๋Š” ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์Šค๋งˆํŠธ๊ธฐ๊ธฐ ์ž์ฒด์—์„œ ์ •๋ณด ์ˆ˜์ง‘ ๋ฐ ์—ฐ์‚ฐ
  • ์˜จ๋””๋ฐ”์ด์Šค AI์˜ ์žฅ์ 
    • ๋น ๋ฅธ AI ์„œ๋น„์Šค ์ œ๊ณต
      • ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ์„ผํ„ฐ๋Š” ์‚ฌ์šฉ์ž ๋‹จ๋ง๊ณผ ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ๊ฒฐ์ •
      • ๋„คํŠธ์›Œํฌ ๋ถˆ์•ˆ์ •์œผ๋กœ ํด๋ผ์šฐ๋“œ AI ์ง€์› ์†๋„๊ฐ€ ๋”๋””๋‹ค๋ฉด ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค ์šด์˜์— ์–ด๋ ค์›€ ์กด์žฌ
      • ์˜จ๋””๋ฐ”์ด์Šค AI๋Š” ๋‹จ๋ง ์ž์ฒด๋กœ AI๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์— ์ƒ๊ด€์—†์ด ์•ˆ์ •์  ์„œ๋น„์Šค ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • ์ •๋ณด ๋ณด์•ˆ ๊ฐ•ํ™”
      • ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ์„ผํ„ฐ๊ฐ€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์ค‘ ๋ณด๊ด€ํ•˜๋ฏ€๋กœ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ์ง‘์•ฝ๋˜๋Š” ํ˜„์ƒ ์‹ฌํ™”
      • ์„ ๋ณ„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๊ฐœ์ธ์ •๋ณด ๋ฐ์ดํ„ฐ์˜ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ์ „์†ก ์ตœ์†Œํ™”
    • ์—๋„ˆ์ง€ ์†Œ๋ชจ ์ ˆ๊ฐ
      • ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ถ€๋‹ด ๊ฐ์†Œ
  • ์˜จ๋””๋ฐ”์ด์Šค AI๊ฐ€ ์ด๋„๋Š” ์‹ (ๆ–ฐ)ํŠธ๋ Œ๋“œ
    • AI๋ฅผ ํ†ตํ•œ ํ•˜๋“œ์›จ์–ด ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”
      • ์˜จ๋””๋ฐ”์ด์Šค AI๋Š” ํ”„๋กœ์„ธ์„œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ์—ญ๋Ÿ‰์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›
    • ํด๋ผ์šฐ๋“œ AI์™€์˜ ์—ฐ๊ณ„๋ฅผ ํ†ตํ•œ AI ์ €๋ณ€ ํ™•๋Œ€
      • ์˜จ๋””๋ฐ”์ด์Šค AI์˜ ์—ฌ๋Ÿฌ ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๊ณ ์ˆ˜์ค€์˜ AI๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์šฐ๋“œ AI ํ™œ์šฉ ํ•„์š”
      • ์˜จ๋””๋ฐ”์ด์Šค AI์™€ ํด๋ผ์šฐ๋“œ AI์˜ ์œ ๊ธฐ์  ๊ฒฐํ•ฉ์„ ํ†ตํ•ด AI๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๋ง๊ณผ ์„œ๋น„์Šค ๋ฒ”์œ„ ํ™•๋Œ€
      • ๋”ฅ๋Ÿฌ๋‹์˜ ํ•™์Šต(Learning)๊ณผ ์ถ”๋ก (Inference) ์—ญํ•  ๋ถ„๋‹ด (ํ•™์Šต:ํด๋ผ์šฐ๋“œAI / ์ถ”๋ก :์˜จ๋””๋ฐ”์ด์ŠคAI)
    • ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์œผ๋กœ ๋ถ€์ƒํ•˜๋Š” AI ๋ฐ˜๋„์ฒด
      • AI ๋‹ด๋‹น ๋ฐ˜๋„์ฒด์˜ ์‚ฌ์šฉ ์ฆ๊ฐ€

 

โ€ป Reference โ€ป

https://shorturl.at/dKQY5 (AI ์—์ด์ „ํŠธ / ์˜จ๋””๋ฐ”์ด์Šค AI ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://www.koit.co.kr/news/articleView.html?idxno=118612 (์˜จ๋””๋ฐ”์ด์Šค AI ๊ด€๋ จ ๊ธฐ์‚ฌ)

https://dbr.donga.com/article/view/1203/article_no/9635 (์˜จ๋””๋ฐ”์ด์Šค AI ๊ด€๋ จ ๊ธฐ์‚ฌ) ๐ŸŒŸ

https://shorturl.at/joH45 (์˜จ ๋””๋ฐ”์ด์Šค ๊ฐœ๋…)

https://yengineeer.tistory.com/9 (AI ๋ฐ˜๋„์ฒด ๊ด€๋ จ ๋‚ด์šฉ ์ •๋ฆฌ)

 


 

2023๋…„๋„์— ๊ฐ€์žฅ ๋งŽ์ด ๋ณธ ๋‰ด์Šค ํ‚ค์›Œ๋“œ๋Š” AI์ธ ๊ฒƒ ๊ฐ™๋‹ค. AI๋Š” IT ๋ถ„์•ผ๋ฅผ ๋„˜์–ด ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋˜๋ฉฐ ์ƒˆ๋กœ์šด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ฐฝ์ถœํ•˜๊ณ  ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์˜ ํ๋ฆ„์„ ์ž˜ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค!!

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์ˆซ์ž๋‚˜๋ผ ๊ธฐ์‚ฌ๋‹จ์˜ ๊ฐ ๊ธฐ์‚ฌ์—๊ฒŒ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ number๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ๋“ค์€ ๋ฌด๊ธฐ์ ์—์„œ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๊ธฐ์‚ฌ๋Š” ์ž์‹ ์˜ ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์— ์˜ํ•ด ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ •ํ•˜๊ณ , ์ œํ•œ์ˆ˜์น˜๋ณด๋‹ค ํฐ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์‚ฌ๋Š” ํ˜‘์•ฝ๊ธฐ๊ด€์—์„œ ์ •ํ•œ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง€๋Š” ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 15๋ฒˆ์œผ๋กœ ์ง€์ •๋œ ๊ธฐ์‚ฌ๋‹จ์›์€ 15์˜ ์•ฝ์ˆ˜๊ฐ€ 1, 3, 5, 15๋กœ 4๊ฐœ ์ด๋ฏ€๋กœ, ๊ณต๊ฒฉ๋ ฅ์ด 4์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๊ฐ€ 3์ด๊ณ  ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์ด 2๋ผ๋ฉด, 15๋ฒˆ์œผ๋กœ ์ง€์ •๋œ ๊ธฐ์‚ฌ๋‹จ์›์€ ๋ฌด๊ธฐ์ ์—์„œ ๊ณต๊ฒฉ๋ ฅ์ด 2์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๊ธฐ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ 1๋‹น 1kg์˜ ์ฒ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด๊ธฐ์ ์—์„œ ๋ฌด๊ธฐ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒ ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ๋‹จ์›์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ number์™€ ์ด์›ƒ๋‚˜๋ผ์™€ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ limit์™€ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ power๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌด๊ธฐ์ ์˜ ์ฃผ์ธ์ด ๋ฌด๊ธฐ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒ ์˜ ๋ฌด๊ฒŒ๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์‹œ์˜ค.

 

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ number ≤ 100,000
  • 2 ≤ limit ≤ 100
  • 1 ≤ power ≤ limit

 

์ž…์ถœ๋ ฅ ์˜ˆ

number limit power result
5 3 2 10
10 3 2 21

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1 (์‹œ๊ฐ„ ์ดˆ๊ณผ)
def solution(number,limit,power):
    answer = 0
    knights = list(range(1,number+1))
    
    for knight in knights:
        cnt = 0
        for n in range(1,knight+1):
            if knight%n == 0:
                cnt += 1
        if cnt > limit:
            answer += power
        else:
            answer += cnt

    return answer

 

ํ’€์ด # 1

  • knights ๋ฆฌ์ŠคํŠธ์— ๊ฐ ๊ธฐ์‚ฌ๋“ค์˜ ๋ฒˆํ˜ธ ๋‹ด๊ธฐ
  • knights ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์•ฝ์ˆ˜ ๊ฐฏ์ˆ˜๋ฅผ cnt ๋ณ€์ˆ˜์— ๋„ฃ๊ธฐ
    • cnt๊ฐ€ limit๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ •ํ•ด์ง„ power๋ฅผ answer์— ๋”ํ•˜๊ธฐ
    • cnt๊ฐ€ limit๋ณด๋‹ค ์ž‘๋‹ค๋ฉด cnt๋ฅผ answer์— ๋”ํ•˜๊ธฐ

 

# 2
def solution(number,limit,power):
    knights = list(range(1,number+1))
    knights_score = []
    
    for knight in knights:
        cnt = 0
        for n in range(1,int(knight**(1/2))+1):
            if knight%n == 0:
                cnt += 1
                if n**2 != knight: 
                    cnt += 1
            if cnt > limit:
                cnt = power
                break
        knights_score.append(cnt)

    return sum(knights_score)

 

ํ’€์ด #2

  • knights ๋ฆฌ์ŠคํŠธ์— ๊ฐ ๊ธฐ์‚ฌ๋“ค์˜ ๋ฒˆํ˜ธ ๋‹ด๊ธฐ
  • knights ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์•ฝ์ˆ˜ ๊ฐฏ์ˆ˜๋ฅผ cnt ๋ณ€์ˆ˜์— ๋„ฃ๊ธฐ
    • ์ด ๋•Œ, ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€์˜ ๋ฒ”์œ„ ์‚ฌ์šฉ (์•ฝ์ˆ˜๋Š” ์ง์ด ์žˆ์œผ๋ฏ€๋กœ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•˜์—ฌ ์ดํ›„์— ์ œ๊ณฑ)
    • ์•ฝ์ˆ˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ limit์„ ๋„˜์–ด๊ฐ€๋ฉด for๋ฌธ์„ ์ข…๋ฃŒํ•˜์—ฌ ์—ฐ์‚ฐ์˜ ์ˆ˜ ์ค„์ด๊ธฐ
  • knights_score ๋ฆฌ์ŠคํŠธ์— ๊ฐ ๊ธฐ์‚ฌ์˜ ์ ์ˆ˜๋ฅผ ์ž…๋ ฅ
  • knights_score์˜ ํ•ฉ์„ ๋ฆฌํ„ด

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฌธ์ œ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ์š”...? ์ œ์ถœํ•˜๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋œจ๋‹ˆ๊นŒ ์•„์ฐ”ํ•ด์„œ ์ธ์ƒ์˜ ์žฌ๋ฏธ๋ฅผ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ’€์ด๋กœ ํ–ˆ์„ ๋•Œ ํ…Œ์ŠคํŠธ1์— 3000ms ๊ฑธ๋ ธ๋Š”๋ฐ ๋‘ ๋ฒˆ์งธ ํ’€์ด๋กœ ํ•˜๋‹ˆ๊นŒ 50ms๊ฐ€ ๋‚˜์™”๋‹ค. ๋‘ ๋ฒˆ์งธ ํ’€์ด๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฐธ๊ณ ํ–ˆ๋Š”๋ฐ ์„ค๋ช…์„ ์ž˜ํ•ด์ฃผ์…”์„œ ์ดํ•ด๊ฐ€ ์ž˜ ๋๋‹ค.

+ Recent posts