728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12987
- 풀이1
- heap
- 최대힙
- 가장 큰 사람끼리 비교
- B팀이 이기면 +1
- 다음으로 가장 큰 사람끼리 비교
- 그렇지 않으면 B팀의 가장 큰사람이 다음 경기에 투입
- 다음으로 가장 큰 A팀 사람과 경기
- B팀이 이기면 +1
- heap
- 코드1
import heapq
def solution(A, B):
answer = 0
# A와 B를 heap으로 만들기(최대힙)
A = [-i for i in A]
B = [-i for i in B]
heapq.heapify(A)
heapq.heapify(B)
while B and A:
# A팀에서 가장 큰 수
a = heapq.heappop(A)
# B팀에서 가장 큰 수
b = heapq.heappop(B)
# B팀 이김
if -a < -b:
answer += 1
# B팀이 이기지 못함
# 현재 B팀의 가장 큰 수를 다음 A팀의 가장 큰 수 와 경쟁
else:
heapq.heappush(B,b)
return answer
- 풀이2
- 두 팀 다 오름차순으로 정렬
- A, B 팀 작은 선수끼리 비교
- B팀은 계속 다음 선수로
- A팀은 B팀이 이긴경우에만 다음 선수로
- 더 효율적인 코드
def solution(A,B):
answer = 0
A.sort()
B.sort()
j = 0
for i in range(len(B)):
# B팀이 이겼다면 다음 A팀 나오기
if A[j] < B[i]:
answer += 1
j += 1
return answer
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] 단속카메라 - Python (0) | 2023.03.06 |
---|---|
[프로그래머스] 다리를 지나는 트럭 - Python (0) | 2023.03.06 |
[프로그래머스] 스킬트리 - Python (0) | 2023.03.04 |
[백준] 1005. ACM Craft - Python (0) | 2023.03.03 |
[프로그래머스] 불량 사용자 - Python (0) | 2023.03.02 |
댓글