728x90
반응형
https://www.acmicpc.net/problem/7795
7795번: 먹을 것인가 먹힐 것인가
심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을
www.acmicpc.net
문제 해결
- 모든 원소를 1대1로 비교해서 계산하는 것은 너무 비효율적이라는 생각이 든다.
- 정렬을 이용해서 A와 B를 오름차순으로 정렬하고, $i \in {0,1,2,3, . . .n-1} $ $j \in {0,1,2,3, .. m-1}$ 인 임의의 $i, j$에 대해서 A[i] > B[j]이면 A[i+1] > B[j]임을 생각을 하면 좋다.
- 만약 A[i]>B[j-1], A[i] ≤ B[j]이고 A[i+1] ≤ B[j] 이면 A[i+1]이 먹을 수 있는 것은 j개라는 것을 알 수 있다.
- 이를 고려하면 쉽게 해결할 수 있다.
CODE
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n,m = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int,input().split()))
A.sort()
B.sort()
answer = 0
j = 0
for i in range(n):
while j<m:
if A[i] > B[j]:
j += 1
else:
answer += j
break
else:
answer += m
print(answer)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 20955 민서의 응급 수술 (0) | 2023.09.25 |
---|---|
[python] 백준 22856 트리 순회 (0) | 2023.09.24 |
[python] 백준 20040 사이클 게임 (0) | 2023.09.11 |
[python] 백준 7490 0 만들기 (0) | 2023.09.07 |
[python] 백준 3055 탈출 (0) | 2023.09.04 |
댓글