[백준][파이썬] 7774번. 콘센트

문제

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

 

풀이

콘센트 - 첫 번째 멀티탭 - 두 번째 멀티탭 - 첫 번째 멀티탭 - 두 번째 멀티탭 ...

이렇게 반복해서 꽂을 수 있다는 점에 유의해야 한다.

 

우선 첫 번째 멀티탭과 두 번째 멀티탭을 콘센트 개수를 기준으로 정렬한다.

첫 번째 멀티탭 중 가장 많은 콘센트를 가지고 있는 멀티탭을 콘센트에 꽂고, 그 콘센트 개수만큼 두 번째 멀티탭을 선택해서 꽂는다(이 때도 가장 많은 콘센트를 가지고 있는 멀티탭부터 선택).

만약 첫 번째 멀티탭과 두 번째 멀티탭이 각각 한 개 이상 남았다면, 또다시 꽂을 수 있으므로 위의 과정을 반복한다.

n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()
b.sort()

answer = 0
while True :
  temp = a.pop()  # 가장 많은 콘센트를 가지고 있는 멀티탭 선택하기
  # 첫 번째 멀티탭에 포함된 콘센트 개수만큼 두 번째 멀티탭 꽂기
  for _ in range(temp) :
    if b :
      answer += b.pop()
    else :
      break
  
  if a and b :  # 두 번째 멀티탭에 첫 번째 멀티탭을 또 꽂을 수 있는 경우
    answer -= 1
  else :
    break
print(answer)
728x90