https://school.programmers.co.kr/learn/courses/30/lessons/118667
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
일단 이문젠 단순 list로 pop을 시켰을 시 시간초과가 뜨는 문제이다.
시간초과로 골머리를 썩히고 있다가, 다른 블로그를 찾아보니 deque개념을 사용했어야됬음..
일반 pop(0) 은 시간복잡도가 O(1)이 아닌 O(n)이란 글을 읽고 from collections import deque를 사용
알고리즘은 크게 어려운 문제는 아니였으나, 전체 경우를 다 탔을 경우의 수를 구하는게 리스트 하나의 길이*3 이라는 점이 함정이다.
from collections import deque
def solution(queue1, queue2):
answer = -1
queue1 = deque(queue1)
queue2 = deque(queue2)
a=sum(queue1)
b=sum(queue2)
c=len(queue1)*3
cnt = 0
while (queue1 and queue2)and c!=cnt:
if a == b:
return cnt
elif a > b:
aqpop=queue1.popleft()
queue2.append(aqpop)
a -= aqpop
b += aqpop
else:
bqpop=queue2.popleft()
queue1.append(bqpop)
b -= bqpop
a += bqpop
cnt+=1
return answer
'Algorithm > programmers' 카테고리의 다른 글
programmers 주차 요금 계산 (0) | 2022.09.19 |
---|---|
[JS]programmers 성격 유형 검사하기 (0) | 2022.09.16 |
programmers 나머지가 1이 되는 수 찾기 (1) | 2022.09.13 |
programmers 문자열 압축 (0) | 2022.08.27 |
programmers 성격 유형 검사하기 (0) | 2022.08.26 |
댓글