본문 바로가기
프로그래머스/Python

[프로그래머스] 숫자 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 9. 25.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 최대로 많은 승리를 하여 최대 승점이 얼마인지 구하는 문제이다.

최대한 많이 승리하려면 작은 숫자를 작은 숫자로 이겨야 한다.

하여 두 팀의 숫자를 오름차순으로 정렬한 뒤, A 팀의 최솟값을 기준으로 B 팀의 숫자를 최솟값부터 비교하며 승리한다면 A 팀의 숫자를 제거하고 이를 B 팀의 마지막 숫자까지 반복하며 승리의 횟수를 계산한다.

 

B 팀의 숫자가 뒤로 넘어갔다는 의미는 현재 A 팀의 최솟값보다 작거나 같다는 의미이므로 A 팀의 숫자가 제거되고 다음 A 팀의 최솟값을 비교할 때 B 팀의 숫자가 처음부터 비교할 필요가 없어진다.

하여 B 팀의 숫자는 한 번씩만 비교되면 된다.

 

  1. 두 숫자 배열을 오름차순으로 정렬한다. A.sort()  B.sort()
  2. B 팀의 출전 순서에 따라 승점이 결정되므로 B 팀의 숫자를 하나씩 불러온다. for i in B
  3. 만약 불러온 B 팀의 숫자가 남아있는 A 팀의 숫자 중 최솟값보다 크면 if (i > A[0])
  4. 최소 숫자로 승리할 수 있다. 진 A 팀의 숫자를 제거한다. del A[0]
  5. 승리하였으므로 승점을 추가한다. answer += 1
반응형

3. 소스코드

def solution(A, B):
    answer = 0

    A.sort()
    B.sort()
    for i in B:
        if (i > A[0]):
            del A[0]
            answer += 1
            
    return answer
728x90
반응형