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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • dp,백트랙킹도 아니고 dfs,bfs도 아님
  • 첨에 재귀로 구하려고 했으나 뒤에 테케에서 전부 시간 초과 걸림
  • while문 돌리면서 break 조건을 len(q1) * 3과 tot1 == tot2로 해줘야 함
  • len(q1) * 4 일 때가 처음으로 돌아갈 때인데, 3으로 숫자를 낮춰서 돌려봐도 통과함
  • 2로 하면 안 통과

 

from collections import deque
def solution(queue1, queue2):
    answer = 0   
    q1, q2 = deque(queue1), deque(queue2)
    tot1, tot2 = sum(q1), sum(q2)
    total = tot1 + tot2
    limit = len(q1) * 3
    
    if total % 2 != 0:
        return -1

    while(True):
        if tot1 > tot2:
            target = q1.popleft()
            q2.append(target)
            tot1 -= target
            tot2 += target
            answer += 1
        elif tot1 < tot2:
            target = q2.popleft()
            q1.append(target)
            tot1 += target
            tot2 -= target
            answer += 1
        else:
            break
        
        if answer == limit:
            answer = -1
            break
    
    return answer

+ Recent posts