최종 코드
import sys
input = sys.stdin.readline
t = int(input())
ans = list()
for i in range(t):
n, m = map(int, input().split())
a = sorted(list(map(int, input().split())), key= lambda x:-x)
b = sorted(list(map(int, input().split())))
res = 0
for j in a:
for k in b:
if j > k: res += 1
else:
break
if j <= k:
continue
ans.append(res)
print('\\n'.join(map(str,ans)))
풀이 과정
A, B 리스트가 존재하고, A리스트의 요소가 B리스트의 요소보다 큰 경우만큼 출력하면 되는 문제였다.
이걸 입력하는 순서대로 비교연산을 하면 비효율적이라고 생각하여 리스트를 정렬하고 연산을 하도록 하였으며, 연산을 더 이상 할 필요가 없을 때에는 break와 continue를 활용하여 불필요한 연산을 최소화하고자 하였다.
출력은 처음에는 print(res)로 해서 매 결과를 출력하는 방식으로 했는데,
이래도 정답 여부에는 지장이 없는 걸로 확인은 됐지만 그냥 나 보기 좋으라고 한번에 출력하는 방식으로 바꿨다.
근데 처음 제출시에 위 코드로 시간 초과가 나길래 어떤 곳에서 시간을 단축시킬 수 있을까 고민하다가 그냥 pypy로 제출해봤더니 통과하였다. 문제 경험이 적다보니 pypy와 python 제출에 따라 시간 초과 여부가 달라지는 문제를 이번에 처음 겪어봐서 신기하였다.
여담이지만, 일단 pypy로 넘어가지니까 좋긴 한데 위 로직에서 더 효율적으로 개선하여 python으로도 통과할 수 있는지 궁금하긴 하다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
백준[python/12759] 틱!택!토! (0) | 2023.02.04 |
---|---|
[백준/python] 2828 사과 담기 게임 (0) | 2023.02.03 |
[백준/C++] 1018번 체스판 다시 칠하기 (0) | 2023.02.02 |
[백준/C++] 2999번 비밀 이메일 (0) | 2023.02.01 |
[BOJ/C] 2947 나무 조각 (0) | 2023.01.30 |