Coding Test sorting, greedy

๊น€ํƒœ์ค€ยท2023๋…„ 3์›” 3์ผ
0

Coding Test - Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
15/29

โœ… ์ •๋ ฌ

๐ŸŽˆ k๋ฒˆ์งธ ์ˆ˜

๋ฐฐ์—ด i~j๋ฒˆ์งธ๋กœ ์ˆซ์ž๋ฅผ ์ž๋ฅด๊ณ  ์ •๋ ฌํ–ˆ์„ ๋•Œ k๋ฒˆ์จฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

def solution(array, commands):
    answer = []
    for i in range(len(commands)):
        result = sorted(array[commands[i][0]-1:commands[i][1]])
        answer.append(result[commands[i][2]-1])
    return answer

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ array๋ฅผ commands ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ array๋ฐฐ์—ด์„ commands๋‚ด ์ˆซ์ž๋กœ ๋ฝ‘์•„ sortingํ•œ ํ›„, answer์— k๋ฒˆ์งธ ์ˆ˜๋งŒ appendํ•˜์˜€๋‹ค.

๐ŸŽˆ ๊ฐ€์žฅ ํฐ ์ˆ˜

์–‘์˜ ์ •์ˆ˜๋กœ ๋œ ๋ฐฐ์—ด numbers๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ์ด ๋ฌธ์ž์กฐํ•ฉ์œผ๋กœ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ œ

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key = lambda x : x*3, reverse = True)
    return str(int(''.join(numbers)))

< ํ’€์ด ๊ณผ์ • >
์šฐ์„  ์ฃผ์–ด์ง„ ์ •์ˆ˜ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ”๊พผ ํ›„, numbers ๋‚ด ์›์†Œ๊ฐ€ 1000์ดํ•˜์ธ ๊ฒƒ์— ์ฃผ๋ชฉํ–ˆ๋‹ค. ํ˜„์žฌ ๋ฌธ์žํ˜•์ธ numbers๋ฅผ 3๋ฐฐ ๊ณฑํ•ด์ฃผ์–ด ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, 3๊ณผ 30์„ ๋น„๊ตํ•˜๋ฉด 333, 303์ด๋˜์–ด 3์ด ๋” ํฐ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

๐ŸŽˆ H-Index

๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ nํŽธ ์ค‘ hํŽธ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋œ ๊ฒฝ์šฐ, h์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

def solution(citations):
    answer = 0
    citations.sort()
    for i in range(len(citations)):
        if len(citations) - i <= citations[i]:
            return len(citations) - i
    return 0

< ํ’€์ด ๊ณผ์ • >
์ „์ฒด ๊ธธ์ด - ์ธ๋ฑ์Šค ๋ณด๋‹ค ์ •๋ ฌ๋œ ๋…ผ๋ฌธ ๋ฐฐ์—ด์˜ ์ˆซ์ž๊ฐ€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ.
return 0์„ ํ•ด์ค€ ์ด์œ ๋Š”, ๋ชจ๋“  ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋„ ๊ณ ๋ ค๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

โœ… ํƒ์š•๋ฒ• (Greedy)

๐ŸŽˆ ์ฒด์œก๋ณต

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

def solution(n, lost, reserve):
    answer = 0
    reserve_num = set(reserve) - set(lost)
    lost_num = set(lost) - set(reserve)
    for i in reserve_num:
        if i+1 in lost_num:
            lost_num.remove(i+1)
        elif i-1 in lost_num:
            lost_num.remove(i-1)
    answer = n - len(lost_num)
    return answer

< ํ’€์ด ๊ณผ์ • >
lost, reserve ๋ฐฐ์—ด์—์„œ reserve๋ฐฐ์—ด์— ์†ํ•˜๋ฉด์„œ lost๋ฐฐ์—ด์—๋„ ์†ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์กŒ๋‹ค. ์ด๋•Œ ํ•ด๋‹น ํ•™์ƒ์€ ํƒ€์ธ์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์—†๋‹ค.
์ด ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด set ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๊ฐ’๋“ค์„ reserve_num, lost_num์œผ๋กœ ์ €์žฅํ•˜๊ณ  for๋ฌธ์œผ๋กœ reserve_num์„ ํƒ์ƒ‰ํ•ด ์•ž๋’ค๋ฒˆํ˜ธ๊ฐ€ lost์— ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๐ŸŽˆ ์กฐ์ด์Šคํ‹ฑ

์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜๋Š” ๋ฌธ์ œ, ๋งจ ์ฒ˜์Œ์€ A๋งŒ ์ฃผ์–ด์ง„๋‹ค.

  • ์œ—๋ฐฉํ–ฅ : ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ
  • ์•„๋žซ๋ฐฉํ–ฅ : ์ด์ „ ์•ŒํŒŒ๋ฒณ
  • ์™ผ์ชฝ๋ฐฉํ–ฅ : ์™ผ์ชฝ์œผ๋กœ ์ด๋™ (์ฒซ๋ฒˆ์งธ ๋ฌธ์ž > ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋กœ ์ด๋™)
  • ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ : ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ (๋งˆ์ง€๋ง‰๋ฌธ์ž > ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๋กœ ์ด๋™)
def solution(name):
    answer = 0
    ์ตœ์†Œ ์ขŒ์šฐ ์ด๋™ ํšŸ์ˆ˜ ์ €์žฅ
    min_move = len(name) - 1
    for i, char in enumerate(name):
    	# ์•ŒํŒŒ๋ฒณ ์ƒํ•˜์ด๋™ํšŸ์ˆ˜ ์ตœ์†Ÿ๊ฐ’ ์ถ”๊ฐ€
        answer += min(ord(char) - ord('A'), ord('Z') - ord(char) + 1)
        # ์—ฐ์†๋œ A ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
        next = i + 1
        while next < len(name) and name[next] == 'A':
            next += 1
        # ์ตœ์†Œ ์ขŒ์šฐ ์ด๋™ํšŸ์ˆ˜, ์—ฐ์†๋œ A์˜ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ๋น„๊ตํ•ด ์ตœ์†Ÿ๊ฐ’ ๊ฐฑ์‹ 
        min_move = min([min_move, 2*i+len(name)-next, i+2*(len(name)-next)])
    answer += min_move
    return answer

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ name์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋Š” ์ž๋ฆฌ์ˆ˜๋Š” ๋™์ผํ•˜๋‚˜ A๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ex) JAZ > AAA๋กœ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์—ฐ์†๋œ A๋Š” ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํ•˜ ๋ฐฉํ–ฅ, ํ˜น์€ ์ขŒ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

  • min_move๋กœ ์ฃผ์–ด์ง„ name์˜ ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•œ๋‹ค.
  • A~Z ์‚ฌ์ด์— alpha๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ์ฐจ์ด๊ฐ€ ๋” ์ž‘์€ ๊ฐ’์„ ์„ ํƒํ•ด answer์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • next๋Š” ๊ฒฐ๊ตญ ์—ฐ์†๋œ A์˜ ๋ ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋˜๊ณ , ์—ฐ์†๋œ A์˜ ์™ผ์ชฝ์œผ๋กœ ์ปค์„œ๋ฅผ ์˜ฎ๊ธฐ๋ฉด ์ขŒ์šฐ ์ด๋™ํšŸ์ˆ˜๋Š” 2์—ฐ์†๋œ A ์ด์ „ ์ธ๋ฑ์Šค + ์—ฐ์†๋œ A์˜ ์˜ค๋ฅธ์ชฝ๋ถ€๋ถ„(len(name)-next)๊ฐ€ ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์—ฐ์†๋œ A์˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ปค์„œ๋ฅผ ์˜ฎ๊ธฐ๋ฉด ์ขŒ์šฐ ์ด๋™ํšŸ์ˆ˜๋Š” 2((len(name)-next)) + ์—ฐ์†๋œ A ์ด์ „ ์ธ๋ฑ์Šค(A์˜ ์™ผ์ชฝ๋ถ€๋ถ„)๊ฐ€ ๋œ๋‹ค.

๐ŸŽˆ ํฐ์ˆ˜ ๋งŒ๋“ค๊ธฐ

์ฃผ์–ด์ง„ ์ˆซ์ž์—์„œ K๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ

def solution(number, k):
    answer = []
    for num in number:
        if not answer:
            answer.append(num)
            continue
        if k > 0:
            while answer[-1] < num:
                answer.pop()
                k -= 1
                if not answer or k <= 0:
                    break
        answer.append(num)
    if k > 0:
        answer = answer[:-k]
    else:
        answer
    return ''.join(answer)
    
### ๊ฐ„๋‹จ ๊ตฌํ˜„
def solution(number, k):
    answer = []
    for num in number:
        while answer and k > 0 and answer[-1] < num:
            answer.pop()
            k -= 1
        answer.append(num)
    return ''.join(answer[:len(answer)-k])

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ ๋ฌธ์ž ๋ฐฐ์—ด number์—์„œ ์•ž ์ˆœ์„œ๋Œ€๋กœ answer์— ๋„ฃ์–ด์„œ ๋‹ค์Œ ์ˆซ์ž์™€ ๋น„๊ตํ•ด ๋‹ค์Œ ์ˆซ์ž๊ฐ€ ๋” ํฌ๋ฉด, answer.pop ํ›„ k - 1์„ ํ•ด ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค.
๋ฐ˜๋ณต๋ฌธ ์ดํ›„ k๊ฐ€ 0๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ์—, answer[:-k]๋กœ ํ‘œํ˜„ํ•ด์ฃผ๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ์—” ๊ทธ๋ƒฅ answer๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ ๋‚ด ์›์†Œ๋งŒ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ.

๐ŸŽˆ ๊ตฌ๋ช…๋ณดํŠธ

๊ตฌ๋ช…๋ณดํŠธ๋Š” ์ตœ๋Œ€ 2์ธ์Šน์ด๊ณ , ์‚ฌ๋žŒ๋“ค ๊ฐœ๊ฐœ์ธ์˜ ๋ชธ๋ฌด๊ฒŒ์™€ ํƒ‘์Šน ์ œํ•œ ๋ฌด๊ฒŒ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ํ•„์š”ํ•œ ๊ตฌ๋ช…๋ณดํŠธ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ œ.

def solution(people, limit):
    answer = 0
    people.sort()
    light = 0
    heavy = len(people) - 1
    while light <= heavy:
        if people[light] + people[heavy] <= limit:
            light += 1
            heavy -= 1
        else:
            heavy -= 1
        answer += 1
    return answer

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ people ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด ๊ฐ€๋ฒผ์šด ์ˆœ์„œ๋ถ€ํ„ฐ ๋‚˜์—ดํ•œ ํ›„ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๊ณผ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ๋”ํ•ด ๋ฌด๊ฒŒ ์ œํ•œ ๋ณด๋‹ค ๋‚ฎ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์˜ฌ๋ ค๊ฐ€๋ฉฐ ๋ฐ˜๋ณต์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋งŒ์ผ ๋ฌด๊ฒŒ ์ œํ•œ๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ๊ฒฝ์šฐ, heavy๋งŒ ํƒœ์›Œ๋ณด๋‚ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค answer + 1 ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ๋ฆฌํ„ดํ•œ๋‹ค.

๐ŸŽˆ ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ

n๊ฐœ์˜ ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•˜๋Š” costs๊ฐ€ ์ฃผ์–ด์งˆ๋•Œ ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ๋ชจ๋“  ์„ฌ์ด ์„œ๋กœ ํ†ตํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
costs ๋ฐฐ์—ด์€ [i, j, c] i>j๋กœ ์ด๋™ํ•˜๋Š”๋ฐ ๋“œ๋Š” ๋น„์šฉc๋งŒํผ ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

def find(parent, x):
    if parent[x] != x:
        return find(parent, parent[x])
    else:
        return x
def union(parent, rank, x, y):
    x_root = find(parent, x)
    y_root = find(parent, y)
    if rank[x_root] < rank[y_root]:
        parent[x_root] = y_root
    else:
        parent[y_root] = x_root
        if rank[x_root] == rank[y_root]:
            rank[x_root] += 1
    
def solution(n, costs):
    answer = 0
    costs.sort(key = lambda x: x[2])
    # ๋…ธ๋“œ ๋ฒˆํ˜ธ, ๊ฐ ๋…ธ๋“œ์˜ rank๊ฐ’ ์ƒ์„ฑ
    parent = [i for i in range(n)]
    rank = [0 for _ in range(n)]
    for cost in costs:
    	# ์„ฌ๊ณผ ์„ฌ๋ผ๋ฆฌ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ
        if find(parent, cost[0]) != find(parent, cost[1]):
            # ํ•ฉ์น˜๊ธฐ
            union(parent, rank, cost[0], cost[1])
            answer += cost[2]
            # ๋ชจ๋“  ๋…ธ๋“œ ์—ฐ๊ฒฐ ์‹œ ์ข…๋ฃŒ
            if len(set(parent)) == 1:
                break             
    return answer

< ํ’€์ด ๊ณผ์ • >
union-find, union-by rank ๊ธฐ๋ฒ•์œผ๋กœ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€์ดํ•˜์˜€๋‹ค.
find ํ•จ์ˆ˜๋กœ ๋ถ€๋ชจ๋…ธ๋“œ๋ฅผ ์ฐพ๊ณ , union ํ•จ์ˆ˜๋กœ ๋‘ ๋ฃจํŠธ๋…ธ๋“œ์˜ rank๊ฐ’์„ ๋น„๊ตํ•ด rank๊ฐ’์ด ๋” ๋†’์€ ์ชฝ์ด ๋ถ€๋ชจ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค.
์ดํ›„, solutionํ•จ์ˆ˜๋กœ parent, rank๋ฅผ ๋งŒ๋“ค์–ด costs๋ฅผ for๋ฌธ์„ ๋Œ์•„ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋„๋ก ๊ฐ„์„ ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ์•ž์„œ costs๋ฅผ ๋น„์šฉ์ด ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

๐ŸŽˆ ๋‹จ์†์นด๋ฉ”๋ผ

์ฐจ๋Ÿ‰ ๋ณ„ ๊ณ ์†๋„๋กœ ์ง„์ž… ์‹œ์ , ๊ณ ์†๋„๋ก ํƒˆ์ถœ ์‹œ์ ์ด ์ฃผ์–ด์ง€๊ณ , ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ํ•œ ๋ฒˆ์€ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ ๋ช‡ ๋Œ€์˜ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

def solution(routes):
    answer = 0
    routes.sort(key = lambda x: x[1])
    camera = -30001
    for route in routes:
        if camera < route[0]:
            answer += 1
            camera = route[1]
    return answer

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ routes์—์„œ route๋ฅผ ๊ณ ์†๋„๋กœ ๋‚˜๊ฐ€๋Š” ์ง€์  ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.
camera ์‹œ์ž‘ ์ง€์ ์„ ๋ฒ”์œ„๊ฐ€ [-30000,30000]์ด๋ฏ€๋กœ -30001๋กœ ์‹œ์ž‘์„ ํ•˜๊ณ  camera๊ฐ€ route[0]๋ณด๋‹ค ์ž‘๋‹ค๋ฉด route[1]๋กœ ๊ณ ์†๋„๋กœ ๋‚˜๊ฐ€๋Š” ์ง€์ ์œผ๋กœ ์นด๋ฉ”๋ผ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

profile
To be a DataScientist

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