728x90
https://school.programmers.co.kr/learn/courses/30/lessons/118667
리스트로 두고 풀어도 될것같긴한데 나는 popleft() 연산을 쓰고 싶어서 deque으로 자료구조를 사용했다
그런데 while 문 탈출조건인 limit에 대해서 고민이 좀 많았다 ;;
내가 3n으로 지정한 이유는 최악의 경우 숫자들이 3n회 이동해야 하기 때문에 그렇게 지정했다
그리고 카카오의 공식 해설에 따르면 투포인터로도 풀 수 있다..
https://tech.kakao.com/2022/07/13/2022-coding-test-summer-internship/#:~:text=%EB%AC%B8%EC%A0%9C%202%EB%B2%88%20%E2%80%93%20%EB%91%90%20%ED%81%90%20%ED%95%A9%20%EA%B0%99%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0&text=%EC%B2%98%EC%9D%8C%20%EC%A3%BC%EC%96%B4%EC%A7%84%20queue1%EC%9D%98%20%ED%95%A9,%EB%A5%BC%20queue2%EB%A1%9C%20%EB%84%98%EA%B2%A8%EC%A4%8D%EB%8B%88%EB%8B%A4.
from collections import deque
def solution(queue1, queue2):
answer = 0
queue1 = deque(queue1)
queue2 = deque(queue2)
temp1 = sum(queue1)
temp2 = sum(queue2)
print(temp1, temp2)
limit = len(queue1) *3
if (temp1 + temp2) % 2 != 0:
return -1
while True:
if temp1 > temp2:
temp1 -= queue1[0]
temp2 += queue1[0]
queue2.append(queue1.popleft())
elif temp1 < temp2:
temp2 -= queue2[0]
temp1 += queue2[0]
queue1.append(queue2.popleft())
else: # 같을때
return answer
answer += 1
if limit == answer:
return -1
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 14382번 숫자세는 양 Python (1) | 2022.09.26 |
---|---|
[백준] 16926 배열돌리기 1 Python (0) | 2022.09.25 |
[백준[ 17609 회문 Python 풀이와 반례 (1) | 2022.09.23 |
백준 1697 숨바꼭질 Python (1) | 2022.09.22 |
[카카오] 비밀지도 Python 풀이 (1) | 2022.09.22 |