https://school.programmers.co.kr/learn/courses/30/lessons/118667
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
from collections import deque
def solution(queue1, queue2):
q1 = deque(queue1)
q2 = deque(queue2)
sumq1= sum(q1)
target = (sum(q1) + sum(q2)) /2
count=0
while q1 and q2:
if sumq1 == target:
return count
elif sumq1 > target:
sumq1 -= q1.popleft()
else:
q1.append(q2.popleft())
sumq1 += q1[-1]
count += 1
return -1
deque를 이용한 평범한 풀이다.
최초에는 sumq를 이용하지 않고 매번 sum을 구해줘서 했는데 그러니까 시간초과가 나더라.
그래서 따로 구해주고 +-만 해줬다.
다른 풀이를 보니까 q1 q2 둘다 append pop해줬던데 그럴필요없이 비교할 하나만 정해서
비교군이 타겟보다 크면 비교군에만 빼주고 다른 한쪽은 가만히 두는게 더 나은거 같다.
다른사람의 풀이
from collections import deque
def solution(queue1, queue2):
qu_1 = deque(queue1)
qu_2 = deque(queue2)
sum_1 = sum(qu_1)
sum_2 = sum(qu_2)
for i in range(len(queue1) * 3):
if sum_1 == sum_2:
return i
if sum_1 > sum_2:
num = qu_1.popleft()
qu_2.append(num)
sum_1 -= num
sum_2 += num
else:
num = qu_2.popleft()
qu_1.append(num)
sum_2 -= num
sum_1 += num
return -1
https://dev-dain.tistory.com/228
[Python3] 프로그래머스 lv2. 118667 두 큐 합 같게 만들기
문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.
dev-dain.tistory.com
최초에 코테칠때 이 두문제 풀고나니 시간을 다써서 아무것도 못했었던 기억이난다..
발전을 하긴하는거같다 이 두문제 풀고나니까 동기부여를 조금 받은거 같다
이 두문제처럼 아주 어려운 문제들도 나중에 보면 그땐 그랬지 할 수 있었으면 한다.
'취준 > 프로그래머스' 카테고리의 다른 글
주차 요금 계산 - 파이썬 (0) | 2022.09.09 |
---|---|
캐시 - 파이썬 (0) | 2022.09.08 |
성격 유형 검사하기 - 파이썬 (0) | 2022.08.31 |
배달 - 파이썬 (0) | 2022.07.27 |
괄호 회전하기 - 파이썬 (0) | 2022.07.25 |