본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2831 댄스 파티

by Alan_Kim 2023. 5. 6.
728x90
반응형

https://www.acmicpc.net/problem/2831

 

2831번: 댄스 파티

남자 N명과 여자 N명이 상근이가 주최한 댄스 파티에 왔다. 상근이는 모든 사람의 키를 알고있다. 각 남자는 모두 여자와 춤을 출 수 있고, 여자는 남자와 춤을 출 수 있다. 모든 사람은 많아야 한

www.acmicpc.net

문제 해결

  • 음수-양수, 양수-음수만 짝이 가능하다.
  • 음수쪽 절대값이 더 커야한다.
  • sort()를 통해 수를 배열하고 음수인 부분이 더 클 경우에 짝을 만들어준다.
  • 남자는 가장 작은수부터, 여자는 가장 큰 수부터 시작해서 짝을 맞춰본다.(절대값이 큰것끼리 짝을 맞춰야 더 많이 짝을 만들 수 있다.)

 

CODE

n = int(input())
M = list(map(int, input().split()))
W = list(map(int, input().split()))
M.sort()
W.sort()
answer = 0
start = 0
end = n-1
while start<n and 0<=end:
    if M[start]<0 and 0<W[end] and abs(M[start])>W[end]:
        answer += 1
        start += 1; end -= 1
    elif M[start]<0 and 0<W[end] and abs(M[start])<=W[end]:
        end -= 1
    elif 0<M[start] and W[end]<0 and M[start] < abs(W[end]):
        answer += 1
        start +=1; end -= 1
    elif 0<M[start] and W[end]<0 and M[start] >= abs(W[end]):
        end -= 1
    elif M[start]<0 and W[end]<0:
        start += 1
    elif 0<M[start] and 0<W[end]:
        end -= 1

print(answer)
728x90
반응형

댓글