알고리즘/프로그래머스

[프로그래머스] 숫자 게임 (Python)

AquaplaneMode 2022. 12. 23. 14:32

문제

문제설명

두 개의 숫자로 이루어진 같은 크기의 배열 A, B가 주어진다. 각 턴마다 A와 B에서 숫자를 하나씩 골라 크기를 비교하며, 숫자의 크기가 큰 팀이 점수를 얻는다. A가 숫자를 고르는 순서가 정해져있을 때, B가 얻을 수 있는 가장 큰 점수는 몇 점인가?

입출력 예

A B Result
[5,1,3,7] [2,2,6,8] 3

A는 [5,1,3,7] 순서로 숫자를 내기 때문에, B가 [6,2,2,8] 순서로 내면 3점을 획득할 수 있다.

풀이

기본 개념

  1. 예제와 같은 배열이 들어왔다고 가정했을 때, 먼저 이를 낮은 순서부터 정렬해준다.

  1. 배열의 각 요소를 순서대로 비교해준다
    • B[i]이 A[i]보다 크다면 A와 B의 index를 1씩 이동시켜준다.
      이 경우, B가 1점을 얻었으므로 answer에 1을 더한다.
    • B[i]이 A[i]보다 작거나 같다면, B의 index만 이동시켜준다.

소스코드

def solution(A, B):
    answer = 0

    A.sort()
    B.sort()

    a = 0
    b = 0

    while b < len(B):

        if A[a] < B[b]:
            answer += 1
            a += 1
            b += 1

        else:
            b += 1

    return answer