728x90
반응형
문제 출처:https://school.programmers.co.kr/learn/courses/30/lessons/12987
풀이 :
from collections import deque
def solution(A, B):
idx = 0
A = deque(sorted(A))
B = deque(sorted(B))
count = 0
while len(B) > 0 and len(A) > 0:
left, right = A.popleft(), B.popleft()
if right > left :
count += 1
else:
idx += 1
A.appendleft(left)
return count
idx 인덱스 A,B 를 메모리 땜에 Deauq 하였다
count 는 총 이긴수
어차피 A 의 숫자는 알고 있다, 그럼 B는 그거에 맞춰서 이기는 경우만 내면 된다.
A와, B를 정렬하고 deque 시킨다.
while 문 조건은 계속 비교하면서 더이상 비교할게 없으면 종료하기 위해서다.
A에서 하나 뽑고 B에서 하나 뽑는다.
처음에는
left = 1 right = 2
A = [3,5,7] B = [2,6,8]
이렇게 나온다.
오른쪽이 더 크므로 count 1 을 더해주고
만약에 right 가 1이라고 생각해보면 같으므로 이길 수 없다. 그러면 left와 right에 다음값을 비교해야한다.
근데 while 문 돌때마다 left,right를 계속 pop한다. 그러므로 다시 A에 넣어준다.
그래서 앞에서 idx를 저장해놓은것이다. idx를 1을 더하면 그 다음 숫자 이기 떄문에
반응형
댓글