๐Ÿ’ซ ETC/Problem Solving

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ณผ์ œ ์ง„ํ–‰ํ•˜๊ธฐ

ming412 2023. 9. 27. 19:50

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

 

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

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

programmers.co.kr

 

โœ๏ธ ๋ฌธ์ œ ์š”์•ฝ

- `plans`๋Š” ์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

- ๋ฉˆ์ถฐ๋‘” ๊ณผ์ œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ฉˆ์ถ˜ ๊ณผ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

๐Ÿค” ์ ‘๊ทผ๋ฒ•

`done`: ์™„๋ฃŒํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ณผ์ œ ์ด๋ฆ„์„ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ

`stack`: ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฉˆ์ถ˜ ๊ณผ์ œ๋ฅผ ๋‹ด์•„๋‘˜ ๋ฆฌ์ŠคํŠธ

 

`plans`๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ๊ณผ์ œ์— ๋Œ€ํ•ด ์•„๋ž˜์ฒ˜๋Ÿผ ๋ถ„๊ธฐํ•œ๋‹ค.

 

- ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ (`start + playtime`์ด ๋‹ค์Œ ๊ณผ์ œ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ)

    - ์ž”์—ฌ ์‹œ๊ฐ„(`playtime`)์„ ๊ฐฑ์‹ ํ•˜์—ฌ ๋Œ€๊ธฐ์—ด(`stack`)์— ์ถ”๊ฐ€

- ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•œ ๊ฒฝ์šฐ (`start + playtime`์ด ๋‹ค์Œ ๊ณผ์ œ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ)

    - `done`์— ์ถ”๊ฐ€ํ•œ๋‹ค.

    - ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์ „๊นŒ์ง€ ์‹œ๊ฐ„์ด ๋‚จ๋Š” ๊ฒฝ์šฐ

        - ๋Œ€๊ธฐ์—ด(`stack`)์— ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ €์žฅ๋œ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰

            - ๋Œ€๊ธฐ์—ด ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•œ ๊ฒฝ์šฐ `done`์— ์ถ”๊ฐ€

            - ๋Œ€๊ธฐ์—ด ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ์ž”์—ฌ ์‹œ๊ฐ„(`playtime`)์„ ๊ฐฑ์‹ ํ•˜์—ฌ ๋Œ€๊ธฐ์—ด(`stack`)์— ์ถ”๊ฐ€

- ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ œ๋Š” ๋ฌด์กฐ๊ฑด `done`์— ์ถ”๊ฐ€

- `plans`๋ฅผ ๋ชจ๋‘ ์ˆœํšŒํ•˜๊ณ  ๋Œ€๊ธฐ์—ด(`stack`)์— ๋‚จ์•„์žˆ๋Š” ๊ณผ์ œ๋Š”, `pop()`ํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ถ€ํ„ฐ `done`์— ์ถ”๊ฐ€

 

๐Ÿ’ช ๋ฌด์‹ํ•˜๊ฒŒ ํ’€๊ธฐ

์•„๋ž˜๋Š” ์ •ํ™•์„ฑ์ด ๋‚ฎ์€ ์ฝ”๋“œ์ด๋‹ค. ๊ทธ ์•„๋ž˜ ์ •ํ™•์„ฑ์„ ๋†’์ธ ์ฝ”๋“œ์—์„œ ์„ธ๋ถ€ ๋กœ์ง์„ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

def hourToMin(str):
    hh, mm = map(int, str.split(':'))
    return hh * 60 + mm

def solution(plans):
    done = [] # ์™„๋ฃŒํ•œ ๊ณผ์ œ
    stack = [] # ๋ฉˆ์ถ˜ ๊ณผ์ œ ๋ฆฌ์ŠคํŠธ (๊ฐ€์žฅ ์ตœ๊ทผ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•œ๋‹ค)
    
    plans.sort(key=lambda x:x[1])
    
    now = 0 # ํ˜„์žฌ ์‹œ๊ฐ
    for i in range(len(plans)-1):
        cur_nm, cur_st, cur_pt = plans[i][0], hourToMin(plans[i][1]), int(plans[i][2])
        next_st = hourToMin(plans[i+1][1])
        
        if cur_st + cur_pt > next_st: # ๋‹ค ๋ชป ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค
            stack.append([cur_nm, cur_st + cur_pt - next_st]) # ํŠœํ”Œ์€ ๋ณ€๊ฒฝ ๋ชปํ•จ
            now = next_st
        elif cur_st + cur_pt == next_st: # ๋‹ค ๋๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ๊ณผ์ œ๋Š” ๋ชปํ•œ๋‹ค
            done.append(cur_nm)
            now = next_st
        else: # ๋‹ค ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ๊ณผ์ œ๋„ ์ž ๊น ํ•œ๋‹ค
            done.append(cur_nm)
            now = cur_st + cur_pt
            while stack:
                if now + stack[-1][1] <= next_st: # ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค
                    done.append(stack.pop()[0]) # ๊ณผ์ œ ์ด๋ฆ„๋งŒ append
                else: # ์ผ๋ถ€๋งŒ ํ•œ๋‹ค -> ๋Œ€๊ธฐ์—ด ๊ณผ์ œ ๋‚จ์€ ์‹œ๊ฐ„ ๊ฐฑ์‹ 
                    stack[-1][1] = now + stack[-1][1] - next_st
                    break
    
    # ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ๋ชฉ
    done.append(plans[-1][0])
    
    # ๋Œ€๊ธฐ์—ด์—์„œ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„์„œ ์ •๋‹ต ๋ฆฌ์ŠคํŠธ์— ์ด์–ด๋ถ™์ธ๋‹ค.
    while stack:
        done.append(stack.pop()[0]) # ๊ณผ์ œ ์ด๋ฆ„๋งŒ append
    
    return done

์ •ํ™•์„ฑ: 75.0

 

๐ŸŽฏ ์ •ํ™•์„ฑ ๋†’์ด๊ธฐ

์ „์ฒด ์ฝ”๋“œ

def hourToMin(str):
    hh, mm = map(int, str.split(':'))
    return hh * 60 + mm

def solution(plans):
    done = [] # ์™„๋ฃŒํ•œ ๊ณผ์ œ
    stack = [] # ๋ฉˆ์ถ˜ ๊ณผ์ œ ๋ฆฌ์ŠคํŠธ (๊ฐ€์žฅ ์ตœ๊ทผ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•œ๋‹ค)
    
    plans.sort(key=lambda x:x[1])
    
    for i in range(len(plans)):
        if i == len(plans) - 1: # ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋Š” ๋ฌด์กฐ๊ฑด ํ•œ๋‹ค
        done.append(plans[i][0])
            break
            
        name, start, pt = plans[i][0], hourToMin(plans[i][1]), int(plans[i][2])
        nStart = hourToMin(plans[i+1][1]) # ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์‹œ๊ฐ„
        
        if start + pt > nStart: # ๋‹ค ๋ชป ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค
            stack.append([name, (start+pt)-nStart]) # ํŠœํ”Œ์€ ๋ณ€๊ฒฝ ๋ชปํ•จ
        else: # ๋‹ค ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค
            done.append(name)
            remaining = nStart - (start + pt) # ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์ „๊นŒ์ง€ ๋‚จ์€ ์‹œ๊ฐ„
            
            while remaining != 0 and stack: # ๋‹ค ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ๊ณผ์ œ๋„ ์ž ๊น ํ•œ๋‹ค
                nn, pp = stack.pop() # ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” name, playtime
                if remaining >= pp: # ๋Œ€๊ธฐ์—ด ๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
                    done.append(nn)
                    remaining -= pp
                else: # ์ผ๋ถ€๋งŒ ํ•˜๊ณ  ๋‹ค์‹œ ๋Œ€๊ธฐ์—ด์— ๋„ฃ๋Š”๋‹ค
                    stack.append([nn, pp - remaining])
                    remaining = 0
    
    # ๋Œ€๊ธฐ์—ด์—์„œ ์ˆœ์„œ๋Œ€๋กœ popํ•˜์—ฌ done ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
    while stack:
        done.append(stack.pop()[0]) # ๊ณผ์ œ ์ด๋ฆ„๋งŒ append
    
    return done

์ •ํ™•์„ฑ 100.0

 

์„ธ๋ถ€ ์„ค๋ช…

์šฐ์„ , `plans` ๋ฆฌ์ŠคํŠธ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— `๊ณผ์ œ ์‹œ์ž‘ ์‹œ๊ฐ„`์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด์•ผ ํ•œ๋‹ค.

plans.sort(key=lambda x:x[1])

 

์ด์ œ `plans`๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ, ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

์šฐ์„ , ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋Š” ๋‹ค์Œ ๊ณผ์ œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด ๋๋งˆ์น  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋Š” `done` ๋ฆฌ์ŠคํŠธ์— ๋„ฃ๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•˜๋ฉด ๋œ๋‹ค.

for i in range(len(plans)):
    if i == len(plans) - 1: # ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋Š” ๋ฌด์กฐ๊ฑด ํ•œ๋‹ค
    done.append(plans[i][0])
        break

 

`plans`์˜ ์›์†Œ๋Š” `[name, start, playtime]`์˜ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, `["korean", "11:40", "30"]`์˜ ํ˜•ํƒœ์ด๋‹ค.

์ด๋•Œ start๋Š” "๋ถ„" ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , playtime์€ ๊ธฐ์กด ๋ฌธ์ž์—ด์—์„œ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๊ณผ์ œ์˜ ์‹œ์ž‘์‹œ๊ฐ„(`nStart`)๋„ ํ•„์š”ํ•˜๋‹ค.

name, start, pt = plans[i][0], hourToMin(plans[i][1]), int(plans[i][2])
nStart = hourToMin(plans[i+1][1]) # ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์‹œ๊ฐ„
...
def hourToMin(str):
    hh, mm = map(int, str.split(':'))
    return hh * 60 + mm

 

๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์—†๋‹ค๋ฉด, ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ๋งŒ ํ•˜๊ณ  `playtime`์„ ๊ฐฑ์‹ ํ•œ ๋’ค ๋Œ€๊ธฐ์—ด(`stack`)์— ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด๋•Œ ํŠœํ”Œ์ด ์•„๋‹ˆ๋ผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š”, ๋‚˜์ค‘์— ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ๊ณผ์ œ๋“ค์˜ `playtime`์„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

if start + pt > nStart: # ๋‹ค ๋ชป ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค
    stack.append([name, (start+pt)-nStart])

 

๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

1) ํ˜„์žฌ ๊ณผ์ œ๋งŒ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

2) ํ˜„์žฌ ๊ณผ์ œ๋ฅผ ๋งˆ์น˜๊ณ  ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์ „๊นŒ์ง€ ๋Œ€๊ธฐ์—ด์˜ ๊ณผ์ œ๋ฅผ ์†๋Œˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

 

์œ„ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์ „๊นŒ์ง€ ๋‚จ์€ ์‹œ๊ฐ„(`remaining`)์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๋‚จ์€ ์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉด์„œ ๋Œ€๊ธฐ์—ด(`stack`)์— ๊ณผ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด, 2๋ฒˆ์˜ ๊ฒฝ์šฐ๋กœ ๋Œ€๊ธฐ์—ด์˜ ๊ณผ์ œ๊นŒ์ง€ (ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ) ํ•œ๋‹ค.

else: # ๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
    done.append(name)
    remaining = nStart - (start + pt) # ๋‹ค์Œ ๊ณผ์ œ ์‹œ์ž‘ ์ „๊นŒ์ง€ ๋‚จ์€ ์‹œ๊ฐ„

    while remaining != 0 and stack: # ๋‹ค ๋๋‚ด๊ณ  ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ๊ณผ์ œ๋„ ์ž ๊น ํ•œ๋‹ค
        nn, pp = stack.pop() # ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” name, playtime
        if remaining >= pp: # ๋Œ€๊ธฐ์—ด ๊ณผ์ œ๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
            done.append(nn)
            remaining -= pp
        else: # ์ผ๋ถ€๋งŒ ํ•˜๊ณ  ๋‹ค์‹œ ๋Œ€๊ธฐ์—ด์— ๋„ฃ๋Š”๋‹ค
            stack.append([nn, pp - remaining])
            remaining = 0

 

๋งˆ์ง€๋ง‰์œผ๋กœ, `plans` ์ˆœํšŒ๋ฅผ ๋งˆ์ณค๋‹ค๋ฉด ๋Œ€๊ธฐ์—ด์— ๋‚จ์€ ๊ณผ์ œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ `pop()`ํ•˜์—ฌ ๋๋‚ด๋ฉด ๋œ๋‹ค.

# ๋Œ€๊ธฐ์—ด์—์„œ ์ˆœ์„œ๋Œ€๋กœ popํ•˜์—ฌ done ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
while stack:
    done.append(stack.pop()[0]) # ๊ณผ์ œ ์ด๋ฆ„๋งŒ append

 

๐Ÿ‘€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ํƒ๊ตฌํ•ด๋ณด๊ธฐ

์ „์ฒด ์ฝ”๋“œ

def hourToMin(str):
    hh, mm = map(int, str.split(':'))
    return hh * 60 + mm

def solution(plans):
    # plans = sorted(map(lambda x: [x[0], hourToMin(x[1]), int(x[2])], plans), key=lambda x: -x[1])
    plans = map(lambda x: [x[0], hourToMin(x[1]), int(x[2])], plans)
    plans = sorted(plans, key=lambda x: x[1], reverse=True)
    
    done = []
    while plans:
        name, start, playtime = plans.pop()
        for i, x in enumerate(done):
            if x[0] > start:
                done[i][0] += playtime
        done.append([start + playtime, name]) # [๊ณผ์ œ๋ฅผ ๋งˆ์นœ ์‹œ๊ฐ, ์ด๋ฆ„]
    done.sort()

    return list(map(lambda x: x[1], done))

 

์„ธ๋ถ€ ์„ค๋ช…

๊ฐ€์žฅ ํ•ต์‹ฌ์€ ์•„๋ž˜ ์ฝ”๋“œ์ด๋‹ค.

- `x`: ์ด๋ฏธ ์™„๋ฃŒ๋œ ๊ณผ์ œ๋“ค ์ค‘ ํ•˜๋‚˜

- `x[0]`: ํ•ด๋‹น ์ด์ „ ๊ณผ์ œ๊ฐ€ ๋๋‚œ ์‹œ๊ฐ„

- `start`: ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๊ณผ์ œ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„

- `playtime`: ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๊ณผ์ œ์˜ ์†Œ์š” ์‹œ๊ฐ„

 

๋”ฐ๋ผ์„œ `if x[0] > start:`๋Š” ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๊ณผ์ œ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„(`start`)์™€ ์ด์ „์— ์™„๋ฃŒ๋œ ๊ณผ์ œ(`x`)์˜ ๋๋‚œ ์‹œ๊ฐ„(`x[0]`)์„ ๋น„๊ตํ•œ๋‹ค.

๋งŒ์•ฝ, `x[0]`์ด `start`๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ์ด์ „์— ์™„๋ฃŒ๋œ ๊ณผ์ œ `x`์™€ ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๊ณผ์ œ๊ฐ€ ์ค‘์ฒฉ๋˜๋Š” ๊ฒฝ์šฐ๋‹ค.

 

์ค‘์ฒฉ๋œ ๊ฒฝ์šฐ์—๋Š” ์ด์ „ ๊ณผ์ œ์˜ ๋๋‚œ ์‹œ๊ฐ„(`done[i][0]`)์„ ์—…๋ฐ์ดํŠธ ํ•˜์—ฌ ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๊ณผ์ œ๊ฐ€ ๋๋‚œ ์ดํ›„๋กœ ์‹œ๊ฐ„์„ ๋”ํ•ด์ค€๋‹ค.

for i, x in enumerate(done):
    if x[0] > start:
        done[i][0] += playtime

 

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

https://velog.io/@yeomja99/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B3%BC%EC%A0%9C-%EC%A7%84%ED%96%89%ED%95%98%EA%B8%B0