문제
접근
두 배열을 정렬해놓고 문제를 풀면 쉬워진다.
현재 배열에서 가장 큰 값끼리 비교를 하고, B가 더 크다면 두 최대값을 없애고 승점을 1점 올린다.
만약 작다면, B의 최대값은 승리를 위해 아껴두고, 최소값을 이용해서 패배한다고 생각하면 된다.
실제 구현에서 최소값을 사용하여 패배할 필요는 없다.
어떤 경우든 A의 최대값은 계속 지워나가므로, A의 크기만큼 돌고나면 끝나기 때문이다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(A, B):
A.sort(reverse=True)
B.sort(reverse=True)
answer = 0
size = len(A)
ai = 0
bi = 0
while size != 0:
if A[ai] < B[bi]:
answer+=1
bi+=1
ai+=1
size-=1
return answer