728x90
🐾 20221202
🐾 20221205
https://school.programmers.co.kr/learn/courses/30/lessons/118667
쉬워보임..!
풀긴 풀었는데 정확도가 100이 안나왔다
틀린코드 :
from collections import deque
def solution(queue1, queue2):
answer = 0
q1,q2 = deque(queue1),deque(queue2)
Sum1 = sum(q1)
Sum2 = sum(q2)
S = Sum1 + Sum2
l1, l2 = 0,0
while l1 <len(q1) and l2 < len(q2) :
print(q1[l1], q2[l2])
if Sum1 == S//2 :
return answer
if Sum1 > Sum2 :
Sum2 += q1[l1]
Sum1 -= q1[l1]
l1 +=1
else :
Sum1 += q2[l2]
Sum2 -= q2[l2]
l2 +=1
answer +=1
return -1
인덱스 이용해서 풀려고 했는데 생각해보니 힘들듯...😂
그래도 96점이라도 나온게 신기하다.
정답 코드 :
from collections import deque
def solution(queue1, queue2):
answer = 0
q1,q2 = deque(queue1),deque(queue2)
Sum1, Sum2 = sum(q1), sum(q2)
for _ in range(len(q1)*3) :
if Sum1 == Sum2 :
return answer
if Sum1 > Sum2 :
Sum1 -= q1[0]
Sum2 += q1[0]
q2.append(q1.popleft())
else :
Sum1 += q2[0]
Sum2 -= q2[0]
q1.append(q2.popleft())
answer +=1
return -1
1. 덱으로 만든다.
2. 각각의 sum을 구한다.
3. sum을 3가지의 경우로 구분한다.
3-1. 같은 경우 : answer을 return
3-2. sum1 > sum2 : sum1에서 빼서 sum2에 넣어준다.
3-3. sum1 < sum2 : sum2에서 빼서 sum1에 넣어준다.
다른건 다 생각할 수 있어도
왜 for문이 len(q1) *3 인지 이해가 안간다.
len(q1) *2 만 해도 충분하지 않나?
여기 들어가보면 반례가 있다.
len()*2를 해도 안되면 3을 해야하는 구나 라고 생각하자
참고 블로그 :
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]괄호 변환_구현 (0) | 2022.10.12 |
---|---|
[Python/프로그래머스]프렌즈4블록_구현 (0) | 2022.10.12 |
[Python/프로그래머스]거리두기 확인하기_[BFS] (1) | 2022.10.08 |
[Python/프로그래머스]주차요금계산_[구현] (0) | 2022.10.06 |
[Python/프로그래머스]경주로 건설_[BFS] (1) | 2022.10.06 |