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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ (Python) - 2022 KAKAO TECH INTERNSHIP

sssbin 2023. 2. 25. 17:48

 

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

 

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

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

programmers.co.kr

 

๋‘ ํ์˜ ํ•ฉ์„ 2๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ํ™€์ˆ˜์ด๋ฉด ๋ฐ”๋กœ -1์„ ๋ฆฌํ„ดํ•œ๋‹ค. (๋‘ ํ์˜ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.)

๋‘ ํ์˜ ํ•ฉ์„ 2๋กœ ๋‚˜๋ˆˆ ๊ฐ’์„ target์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ , ํ1์˜ ํ•ฉ์„ left๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

๊ทธ ํ›„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ left < target์ด๋ฉด ํ2์—์„œ ์›์†Œ๋ฅผ ๊บผ๋‚ด ํ1์— ๋„ฃ์–ด์ฃผ๊ณ , 

left > target์ด๋ฉด ๋ฐ˜๋Œ€๋กœ ํ1์—์„œ ์›์†Œ๋ฅผ ๊บผ๋‚ด ํ2์— ๋„ฃ์–ด์ฃผ๊ณ ,

left == target์ด๋ฉด ๊ทธ๋Œ€๋กœ ์ •๋‹ต์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค!!

๋ฐ˜๋ณต๋ฌธ์ด ๋ชจ๋‘ ๋๋‚ฌ๋‹ค๋ฉด ๋‘ ํ์˜ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— -1์„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 118667: ๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ (2022 KAKAO TECH INTERNSHIP)

from collections import deque

def solution(queue1, queue2):
    if (sum(queue1) + sum(queue2)) % 2 != 0:
        return -1
        
    target = (sum(queue1) + sum(queue2)) // 2
    left = sum(queue1)
    
    queue1 = deque(queue1)
    queue2 = deque(queue2)
    answer = 0
    
    while queue1 and queue2:
        if left < target:
            q = queue2.popleft()
            queue1.append(q)
            left += q
            answer += 1
        elif left > target:
            q = queue1.popleft()
            queue2.append(q)
            left -= q
            answer += 1
        else:
            return answer
        
    return -1

 

ํ•˜์ง€๋งŒ tc28์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๊ณ , ์ง์ ‘ ๋ฐ˜๋ก€๋ฅผ ๋„ฃ์–ด๋ณด๋‹ˆ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฌดํ•œ์œผ๋กœ ๋Œ๊ณ  ์žˆ๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ฒ˜์Œ์˜ ํ๋ฅผ ์ €์žฅํ•ด๋†“๊ณ , ํ๊ฐ€ ๊ฐ™์œผ๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ..

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 118667: ๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ (2022 KAKAO TECH INTERNSHIP)

from collections import deque

def solution(queue1, queue2):
    if (sum(queue1) + sum(queue2)) % 2 != 0:
        return -1

    target = (sum(queue1) + sum(queue2)) // 2
    left = sum(queue1)
    
    q1 = deque(queue1)
    q2 = deque(queue2)
    answer = 0
    
    while q1 and q2:
        if left < target:
            q = q2.popleft()
            q1.append(q)
            left += q
            answer += 1
        elif left > target:
            q = q1.popleft()
            q2.append(q)
            left -= q
            answer += 1
        else:
            return answer
        
        if q1 == deque(queue1) or q1 == deque(queue2):
            return -1
        
    return -1

 

ใ…Žใ…Ž ๋”๋”์šฑ ์‹ฌ๊ฐํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค..;

๊ทธ๋ž˜์„œ ๋‹ค์‹œ ๋ฐ˜๋ก€๋กœ ๊ณ„์‚ฐํ•ด๋ณด๋‹ค๊ฐ€

ํ์˜ ๊ธธ์ด(๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๋‘ ํ์˜ ๊ธธ์ด๋Š” ๊ฐ™๋‹ค.) * 4๋ฒˆ ์ด์ƒ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด

๊ฒฐ๊ตญ ์ฒ˜์Œ์˜ ํ๋กœ ๋Œ์•„์˜จ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค!

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 118667: ๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ (2022 KAKAO TECH INTERNSHIP)

from collections import deque

def solution(queue1, queue2):
    if (sum(queue1) + sum(queue2)) % 2 != 0:
        return -1

    length = len(queue1) * 4
    target = (sum(queue1) + sum(queue2)) // 2
    left = sum(queue1)
    
    q1 = deque(queue1)
    q2 = deque(queue2)
    answer = 0
    
    while q1 and q2:
        if left < target:
            q = q2.popleft()
            q1.append(q)
            left += q
            answer += 1
        elif left > target:
            q = q1.popleft()
            q2.append(q)
            left -= q
            answer += 1
        else:
            return answer
        
        if answer >= length:
            return -1
        
    return -1

 

๋ฌด์‚ฌํžˆ ํ†ต๊ณผ..๐Ÿ˜ญ