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
'◦ Algorithm > Python' 카테고리의 다른 글
프로그래머스 무지의 먹방 라이브 그리디 (0) | 2023.06.02 |
---|---|
백준 2xn 타일링 2 DP (0) | 2023.05.24 |
백준 스타트와 링크 14889 완전탐색 (0) | 2023.05.14 |
백준 퇴사 14501 DP (0) | 2023.05.14 |
백준 로봇 조종하기 2169 DP (0) | 2023.05.09 |