본문 바로가기
프로그래머스/3단계

(Python/LV3)숫자 게임

by windy7271 2023. 3. 3.
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을 더하면 그 다음 숫자 이기 떄문에

 

 

 

 

 

반응형

댓글