HwangHub

[백준 / Python] #7795 먹을 것인가 먹힐 것인가 본문

workspace/알고리즘

[백준 / Python] #7795 먹을 것인가 먹힐 것인가

HwangJerry 2023. 2. 2. 22:58
 

7795번: 먹을 것인가 먹힐 것인가

심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을

www.acmicpc.net

최종 코드

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으로도 통과할 수 있는지 궁금하긴 하다.

Comments