⚡️algorithm/accepted

[queue] 프로그래머스 lv2. 두큐합 같게 만들기 (feat. deque의 주요 메서드)

남남이루 2022. 9. 8. 18:10

아직 잘 모르겠는 문제, 외우고 쳐보는 것도 잘 안된다.

참고한 후, 답안

from collections import deque
def solution(queue1, queue2):

    answer = 0
    mid = sum(queue1) + sum(queue2)
    if mid % 2 != 0:
        return -1

    tot //= 2
    q1 = deque(queue1)
    q2 = deque(queue2)
    sum1 = sum(queue1)
    sum2 = sum(queue2)

    while q1 and q2:
        if sum1 > mid:
            tmp = q1.popleft()
            sum1 -= tmp
            sum2 += tmp

        elif sum1 < mid:
            tmp = q2.popleft()
            q1.append(tmp)
            sum1 += tmp
            sum2 -= tmp
        else:
            return answer
        answer += 1    # 횟수 ++

    return -1

 

 

deque

  • 생성 : deque() 또는 deque(리스트형)
  • 주요 메서드 : append(), popleft()
  • 길이 지정 파라미터 : deque(maxlen=사이즈)
from collections import deque

cities = deque()
deque.append(1)
deque.popleft() # 왼쪽 끝값 반환 후 제거

countries = deque([1,2,3,4])
countries.appendleft(0)  # 왼쪽 끝값 추가
# deque(0, 1, 2, 3, 4)
def solution(cacheSize, cities):
    import collections
    cache = collections.deque(maxlen=cacheSize)
    time = 0
    for i in cities:
        s = i.lower()
        if s in cache:
            cache.remove(s)
            cache.append(s)
            time += 1
        else:
            cache.append(s)
            time += 5
    return time