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
๋ฌด์ฌํ ํต๊ณผ..๐ญ