๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ (Python) - 2023 KAKAO BLIND RECRUITMENT

sssbin 2023. 2. 28. 17:37

 

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

 

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

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

programmers.co.kr

 

d_temp, p_temp ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ง‘์„ ๋์—์„œ๋ถ€ํ„ฐ ๋Œ๋ฉด์„œ ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐํ•˜๋Š” ๋Œ€๋กœ ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผฐ๋‹ค.

๋‘ ๋ณ€์ˆ˜๊ฐ€ cap๋ณด๋‹ค ํฌ๋‹ค๋ฉด for๋ฌธ์„ ๋ฉˆ์ถ”๊ณ  n๊ฐ’์„ ๊ฐฑ์‹ ํ•˜์—ฌ ๋‹ค์‹œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค.

 

# ์‹คํŒจ
# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 150369: ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ (2023 KAKAO BLIND RECRUITMENT)

def solution(cap, n, deliveries, pickups):
    answer = 0
    
    while n >= 1:
        d_temp = 0
        p_temp = 0
        answer += n * 2
        
        for i in range(n-1, -1, -1):
            d_temp += deliveries[i]
            p_temp += pickups[i]

            if d_temp > cap:
                deliveries[i] = d_temp - cap
                n = i + 1
                break
            if p_temp > cap:
                pickups[i] = p_temp - cap
                n = i + 1
                break
        else:
            return answer
                
    return answer

 

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋‹ค ๋งž์•˜๋Š”๋ฐ, ์ฑ„์  ๊ฒฐ๊ณผ๋Š” 10์ ์ด์—ˆ๋‹ค (..ใ…‹)

๋งจ ๋งˆ์ง€๋ง‰ ์ง‘์— ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐํ•  ํƒ๋ฐฐ๊ฐ€ ์—†๋‹ค๋ฉด ํ‹€๋ฆฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๊ฑธ ๊นจ๋‹ซ๊ณ ,

ํ•ด๋‹น ์กฐ๊ฑด์ผ ๋•Œ n๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

 

# ์‹คํŒจ
# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 150369: ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ (2023 KAKAO BLIND RECRUITMENT)

def solution(cap, n, deliveries, pickups):
    answer = 0

    while deliveries[n-1] == 0 and pickups[n-1] == 0:
        n -= 1
    
    while n >= 1:
        d_temp = 0
        p_temp = 0
        answer += n * 2
        
        for i in range(n-1, -1, -1):
            d_temp += deliveries[i]
            p_temp += pickups[i]

            if d_temp > cap:
                deliveries[i] = d_temp - cap
                n = i + 1
                break
            if p_temp > cap:
                pickups[i] = p_temp - cap
                n = i + 1
                break
        else:
            return answer
                
    return answer

 

๊ทธ๋ฆฌ๊ณ  ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค. ใ…Žใ…Ž;;

 

๊ทธ๋ž˜์„œ ์งˆ๋ฌธํ•˜๊ธฐ ๊ฒŒ์‹œํŒ์„ ๋ณด๊ณ ,,, ๋˜‘๋˜‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์•˜๋‹ค.

๋งจ ๋งˆ์ง€๋ง‰ ์ง‘์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•ด๋‹น ์ง‘์— ๋ฐฉ๋ฌธํ•  ๋•Œ

๋ชจ๋“  ํƒ๋ฐฐ๊ฐ€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ๋  ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ๋Œ๋ ค ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฐ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ๊ณฑํ•ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์ง‘์— ํƒ๋ฐฐ๊ฐ€ ์—†์„ ๋•Œ์˜ ์ผ€์ด์Šค๋„ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 150369: ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ (2023 KAKAO BLIND RECRUITMENT)

def solution(cap, n, deliveries, pickups):
    answer = 0
    d_temp = 0
    p_temp = 0

    for i in range(n-1, -1, -1):
        cnt = 0
        d_temp += deliveries[i]
        p_temp += pickups[i]

        while d_temp > 0 or p_temp > 0:
            d_temp -= cap
            p_temp -= cap
            cnt += 1

        answer += cnt * (i+1) * 2
                
    return answer

 

๐Ÿ‘‡ ๋‚ด๊ฐ€ ์ผ๋˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค

print(solution(4, 5, [1, 0, 3, 1, 2], [0, 3, 0, 4, 0])) # 16
print(solution(2, 7, [1, 0, 2, 0, 1, 0, 2], [0, 2, 0, 1, 0, 2, 0])) # 30
print(solution(2, 2, [0,0], [0,4])) # 8
print(solution(2, 2, [1,0], [1,0])) # 2