🔗 Problem Link
❔Thinking
- A, B가 팀 대결을 펼치며, B팀은 A팀이 내는 숫자보다 큰 숫자를 골라 이겨야 한다.
- 이때, 가장 최대한 많은 경기를 이길 수 있는 횟수를 반환한다.
💻Solution
1. bisect_right를 이용한 풀이
from bisect import bisect_right
def solution(A, B):
win = 0
B.sort()
for a in A:
next_player = bisect_right(B, a)
if next_player < len(B):
win += 1
B.pop(next_player)
else:
B.pop(0)
return win
2. List 정렬을 통한 풀이
def solution(A, B):
win = 0
A.sort()
B.sort()
j = 0
for i in range(len(A)):
if A[j] < B[i]:
win += 1
j = j+1
return win
🗝️keypoint
- B팀은 A의 숫자보다 큰 수 중 가장 작은 수를 내야한다.
- A의 숫자보다 큰 수가 없다면, 가장 작은 수를 내며 큰 수들을 아껴야 한다.
'코딩테스트 > Python' 카테고리의 다른 글
[Baekjoon] 1003 - 피보나치 함수 (0) | 2022.10.30 |
---|---|
[Baekjoon] 17219. 비밀번호 찾기 (0) | 2022.10.30 |
[Programmers] Level 3. 단속 카메라 (0) | 2022.10.08 |
[Programmers] Level 3. 최고의 집합 (Python) (0) | 2022.10.04 |
[Programmers] Level 3. 정수 삼각형 (Python) (0) | 2022.10.02 |