https://school.programmers.co.kr/learn/courses/30/lessons/12987
제한 조건에 A와 B 리스트의 최대 길이가 100,000인 것을 확인하고 이중 for문을 사용하면 안된다고 판단하였다.
(실제로 구현했을 때 시간초과를 확인할 수 있었다.)
또한, 조건에 A와 B의 리스트의 길이가 같다고 하였기 때문에 A와 B를 동시에 비교하기로 결정하였다.
먼저, A와 B의 리스트를 오름차순으로 정렬하여 비교하기 편하게 세팅하였다.
그 후, 마지막 원소부터 비교하여 A 원소보다 B원소가 크다면 우리의 목적에 맞기 때문에 두 리스트 전부 pop 후 answer + 1를 해준다.
반대로 A 원소보다 B원소가 작다면 A 원소만 pop을 해주어, 이전 보다 더 작은 A 원소와 B 원소를 비교하도록 구현하였다.
이를 반복하여 A원소가 사라지면 while문을 탈출하고 결과를 반환하도록 하였다.
from collections import deque
def solution(A, B):
answer = 0
A.sort()
B.sort()
A = deque(A)
B = deque(B)
while A:
if A[-1] < B[-1]:
answer += 1
A.pop()
B.pop()
else:
A.pop()
return answer
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 3] / [Python] 스티커 모으기(2) (0) | 2024.02.17 |
---|---|
[프로그래머스] / [Level 3] / [Python] 기지국 설치 (0) | 2024.02.16 |
[프로그래머스] / [Level 3] / [Python] 단어 변환 (0) | 2024.02.16 |
[프로그래머스] / [Level 3] / [Python] 네트워크 - DFS/BFS (0) | 2024.02.13 |
[프로그래머스] / [Level 3] / [Python] 정수 삼각형 (0) | 2024.02.05 |