문제
- que 관련 문제: 하나의 큐에서 원소 추출해서 다른 큐에 집어넣기 (큐는 선입 선출)
- 결과적으로 두 큐의 원소 합이 같도록 만들기(전체 합을 파악한 후, 나눠서 담는다고 생각하자)
풀이
첫 시도
from collections import deque
def solution(queue1, queue2):
answer = 0
queue1=deque(queue1) ; queue2=deque(queue2) #큐로 변환해주기(popleft 함수 사용위해)
que_sum = sum(queue1)+sum(queue2)
q_s = que_sum //2
if que_sum % 2 != 0: #반반 나눌 수 없으면(2로 나누어 떨어지지 않으면 -1 return)
return -1
if que_sum % 2 == 0:
while True:
v=queue1.popleft()
queue2.append(v)
answer +=1
return answer
그냥 쭉쭉 다 옮겨버려서 empty deque가 만들어짐
-> Sum을 각각 변수로 저장한 후에 조건을 맞춰 break해줄 필요가 있다
두번째 시도
#que 관련 문제: 하나의 큐에서 원소 추출해서 다른 큐에 집어넣기 (큐는 선입 선출)
#-> 결과적으로 두 큐의 원소 합이 같도록 만들기(전체 합을 파악한 후, 나눠서 담는다고 생각)
from collections import deque
def solution(queue1, queue2):
answer = 0
queue1=deque(queue1) ; queue2=deque(queue2) #큐로 변환해주기(popleft 함수 사용위해)
q1= sum(queue1) ; q2= sum(queue2)
que_sum = q1+q2
if que_sum % 2 != 0: #반반 나눌 수 없으면(2로 나누어 떨어지지 않으면 -1 return)
return -1
while True:
if q1>q2:
v=queue1.popleft()
queue2.append(v)
q1 -= v ; q2+=v #처리 해준 만큼 sum에서 빼주기
answer+=1
elif q1< q2:
v=queue2.popleft()
queue1.append(v)
q2 -= v ; q1+=v #처리 해준 만큼 sum에서 빼주기
answer+=1
else:
break
return answer
흠냐 .. 아 !
- 주의: 언어에 따라 합 계산 과정 중 산술 오버플로우 발생 가능성이 있으므로 long type 고려가 필요합니다.
limit를 만들어서 예외 처리 추가
최종 코드
#que 관련 문제: 하나의 큐에서 원소 추출해서 다른 큐에 집어넣기 (큐는 선입 선출)
#-> 결과적으로 두 큐의 원소 합이 같도록 만들기(전체 합을 파악한 후, 나눠서 담는다고 생각)
from collections import deque
def solution(queue1, queue2):
answer = 0
queue1=deque(queue1) ; queue2=deque(queue2) #큐로 변환해주기(popleft 함수 사용위해)
q1= sum(queue1) ; q2= sum(queue2)
que_sum = q1+q2
l= len(queue1*4)
if que_sum % 2 != 0: #반반 나눌 수 없으면(2로 나누어 떨어지지 않으면 -1 return)
return -1
while True:
if q1>q2:
v=queue1.popleft()
queue2.append(v)
q1 -= v ; q2+=v #처리 해준 만큼 sum에서 빼주기
answer+=1
elif q1< q2:
v=queue2.popleft()
queue1.append(v)
q2 -= v ; q1+=v #처리 해준 만큼 sum에서 빼주기
answer+=1
else:
break
if answer == l:
answer =-1
break
return answer
300x250
'Algorithm' 카테고리의 다른 글
[코딩테스트/Python] 꼭 필요한 자료구조 기초: 재귀함수 (0) | 2023.05.08 |
---|---|
[코딩테스트 /Python] 프로그래머스 기능 개발 (0) | 2023.05.04 |
[코딩테스트/Python] 꼭 필요한 자료구조 기초: 스택과 큐 (0) | 2023.03.13 |
[코딩 테스트/Python] 구현 문제 (0) | 2023.03.06 |
[코딩테스트/Python] Greedy 알고리즘 예제/ 숫자 카드 게임 (0) | 2023.03.03 |