๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Problem_Solving/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ณ ๋“์  kit - ์Šคํƒ / ํ

by ํฌ์ŠคํŠธ์‰์ดํฌ 2023. 1. 16.

<๋ฌธ์ œ ๋งํฌ>

https://school.programmers.co.kr/learn/courses/30/parts/12081

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

<ํ’€์ด ์ „๋žต>

1. ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด: ์Šคํƒ์„ ํ™œ์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

2. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ: ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํƒ์„ ํ™œ์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค

3. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ: ์ž…๋ ฅ๊ฐ’์„ ํ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์™„๋ฃŒ ๋  ๋•Œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋นผ๊ฐ€๋ฉด์„œ ํ’€์—ˆ๋‹ค.

4. ํ”„๋ฆฐํ„ฐ: enumerate๋ž‘ ํ๋ฅผ ํ™œ์šฉํ•ด์„œ ์š”์ฒญ ๋ฌธ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ํ๋ฅผ ๋Œ๋ ค์„œ ํ’€์—ˆ๋‹ค.

5. ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ: ๋‹ค๋ฆฌ๋ฅผ ์ฃผ์–ด์ง„ ๊ธธ์ด์— ๋งž๋Š” ํ๋กœ ๊ตฌํ˜„ํ•ด์„œ ํŠธ๋Ÿญ์˜ ์ด๋™์„ ๊ตฌํ˜„ํ•ด์„œ ํ’€์—ˆ๋‹ค. ์ฃผ์˜ํ•  ์ ์œผ๋กœ๋Š” ํ˜„๋Œ€ ๋‹ค๋ฆฌ์˜ ํ•˜์ค‘์„ ๊ฒ€์‚ฌํ•  ๋•Œ sum์„ ์“ฐ๋ฉด ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ํ˜„์žฌ ํ•˜์ค‘์„ ๋”ฐ๋กœ ๋ณ€์ˆ˜๋กœ ํ• ๋‹นํ•ด์„œ ๊ณ„์‚ฐํ•ด์ค˜์•ผ ํ•œ๋‹ค.

6. ์ฃผ์‹ ๊ฐ€๊ฒฉ: 2์ค‘ for๋ฌธ์œผ๋กœ ํ’€์–ด๋„ ํ†ต๊ณผ๊ฐ€ ๋œ๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ์ธ๋ฑ์Šค ๋“ฑ ๋ฒ”์œ„ ์„ค์ •์„ ์ž˜ํ•ด์ค˜์•ผ ๋œ๋‹ค.

<์ •๋‹ต ์ฝ”๋“œ>

# 1. ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด

def solution(arr):
    answer = []
    for num in arr:
        if answer and answer[-1] == num:
            continue
        answer.append(num)

    return answer

 

# 2. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

def solution(s):
    answer = True
    
    stack = []
    
    for char in s:
        
        if not stack: 
            stack.append(char)
            
        else:
            if stack[-1] == '(' and char == ')':
                stack.pop()
            else:
                stack.append(char)
    
    if stack:
        answer = False


    return answer

 

# 3. ๊ธฐ๋Šฅ๊ฐœ๋ฐœ

from collections import deque


def solution(progresses, speeds):

    progresses = deque(progresses)
    speeds = deque(speeds)

    answer = []
    
    while True:
        
        for i in range(len(progresses)):
            progresses[i] += speeds[i]

        if progresses[0] >= 100:

            done = 0

            while True:

                if not progresses:
                    break

                if progresses[0] < 100:
                    break

                progresses.popleft()
                speeds.popleft()

                done += 1

            answer.append(done)

        if not progresses:
            break

    return answer

 

# 4. ํ”„๋ฆฐํ„ฐ

from collections import deque

def solution(priorities, location):
    printer = deque(enumerate(priorities))
    answer = 0


    while True:
        
        if printer[0][1] == max(printer, key=lambda x:x[1])[1]:

            answer += 1
            idx = printer.popleft()[0]

            if idx == location:
                break

        else:
            printer.append(printer.popleft())

            

    return answer

 

# 5. ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ

from collections import deque


def solution(bridge_length, weight, truck_weights):
    answer = 1
    
    bridge = deque([0 for _ in range(bridge_length)])
    truck_weights = deque(truck_weights)
    truck_cnt = len(truck_weights)
    cnt = 0
    current_weight = 0

    while True:
        
        out = bridge.popleft()

        if out > 0:
            cnt += 1
            current_weight -= out
            if cnt == truck_cnt:
                break

        if truck_weights and weight >= current_weight + truck_weights[0]:
            in_truck = truck_weights.popleft()
            bridge.append(in_truck)
            current_weight += in_truck
        else:
            bridge.append(0)

        answer += 1    

    return answer

 

# 6. ์ฃผ์‹๊ฐ€๊ฒฉ

def solution(prices):
    answer = []
    
    for i in range(len(prices) - 1):
        cnt = 1
        for j in range(i + 1, len(prices) - 1):
            if prices[j] < prices[i]:
                break
            cnt += 1
        answer.append(cnt)
    
    answer.append(0)
            
    return answer

๋Œ“๊ธ€