문제 - https://programmers.co.kr/learn/courses/30/lessons/12987
조금 이상한 문제였습니다. 처음 딱 문제를 볼 때에는 너무 쉬운데? 라고 생각했다가 잘못 생각에 빠지니까 너무 어려웠다가.. 결국 생각을 바꾸니 어렵지 않게 풀어 내었습니다.
일단은 A, B 모두 정렬을 해주었습니다. B의 순서를 결국 내가 마음대로 할 수 있다는 것은 정렬을 하여도 된다는 뜻 입니다. 그래서 일단 오름차순으로 정렬을 한 뒤 판단을 시작했습니다.
그리고 stack의 느낌 처럼 가장 큰 수를 하나씩 꺼내면서 비교를 시작 했습니다.
만약 B가 A보다 클 경우 다음 수를 비교하고 B가 A보다 작았을 경우 B는 갖고 있고, 다음으로 큰 수인 A와 비교를 합니다.
위의 과정을 반복해서 답을 찾아냅니다.
def solution(A, B):
answer = 0;
#A, B를 정렬해줍니다.
A.sort();
B.sort();
a = 0;
b = 0;
while A:
if b == 0:
b = B.pop();
a = A.pop();
#만약 b가 a보다 클 경우 다음으로 큰 b를 담아주기 위해 b를 0으로 초기화 해줍니다.
if b>a:
answer += 1;
b = 0;
return answer;