λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜ 문제 풀이

[μ΄μ½”ν…Œ] 두 λ°°μ—΄μ˜ μ›μ†Œ ꡐ체

by syLim___ 2023. 2. 23.
728x90

좜처: 이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€  with 파이썬 (λ‚˜λ™λΉˆ)

https://www.youtube.com/watch?v=94RC-DsGMLo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=5

 

문제

  • λˆλΉˆμ΄λŠ” 두 개의 λ°°μ—΄ A와 Bλ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 두 배열은 N개의 μ›μ†Œλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며, λ°°μ—΄μ˜ μ›μ†ŒλŠ” λͺ¨λ‘ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • λ™λΉˆμ΄λŠ” μ΅œλŒ€ K번의 λ°”κΏ”μΉ˜κΈ° 연산을 μˆ˜ν–‰ν•  수 μžˆλŠ”λ°, λ°”κΏ”μΉ˜κΈ° μ—°μ‚°μ΄λž€ λ°°μ—΄ A에 μžˆλŠ” μ›μ†Œ ν•˜λ‚˜μ™€ λ°°μ—΄ B에 μžˆλŠ” μ›μ†Œ ν•˜λ‚˜λ₯Ό κ³¨λΌμ„œ 두 μ›μ†Œλ₯Ό μ„œλ‘œ λ°”κΎΈλŠ” 것을 λ§ν•©λ‹ˆλ‹€.
  • λ™λΉˆμ΄μ˜ μ΅œμ’… λͺ©ν‘œλŠ” λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ 합이 μ΅œλŒ€κ°€ λ˜λ„λ‘ ν•˜λŠ” 것이며, μ—¬λŸ¬λΆ„μ€ λ™λΉˆμ΄λ₯Ό 도와야 ν•©λ‹ˆλ‹€.
  • N,K 그리고 λ°°μ—΄ A와 B의 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΅œλŒ€ K번의 λ°”κΏ”μΉ˜κΈ° 연산을 μˆ˜ν–‰ν•˜μ—¬ λ§Œλ“€ 수 μžˆλŠ” λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ ν•©μ˜ μ΅œλŒ“κ°’μ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

 

문제 쑰건

  • 풀이 μ‹œκ°„: 15λΆ„
  • μ œν•œ μ‹œκ°„: 2초
  • λ©”λͺ¨λ¦¬ μ œν•œ: 128MB


아이디어

 -AλŠ” μ˜€λ¦„μ°¨μˆœ, BλŠ” λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€

 -첫번째 ~ k번째 μ›μ†Œλ“€μ— λŒ€ν•˜μ—¬ A,B의 μ›μ†Œλ“€μ„ ν•˜λ‚˜μ”© κ΅μ²΄ν•΄μ£ΌλŠ”λ°,

 -κ΅μ²΄ν•˜λ €λŠ” A의 μ›μ†Œκ°€ B의 μ›μ†Œλ³΄λ‹€ 크닀면 κ·Έλ•ŒλΆ€ν„°λŠ” 더이상 ꡐ체λ₯Ό ν•  ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ κ΅μ²΄μž‘μ—…μ„ μ’…λ£Œν•΄μ€€λ‹€

 

μž‘μ„± μ½”λ“œ

n,k = map(int,input().split())

A = list(map(int,input().split()))
B = list(map(int,input().split()))

A.sort()
B.sort(reverse=True)

for i in range(k):
  if A[i] > B[i]:
    break
  else: 
    A[i],B[i] = B[i],A[i]

sum=0
for i in range(n):
  sum += A[i]

print(sum)

 sum() ν•¨μˆ˜κ°€ μžˆλŠ”μ€„ λͺ°λΌμ„œ 반볡문 λŒλ¦¬λ©΄μ„œ 합을 κ΅¬ν–ˆλ‹€ ν—£

 

 

n,k = map(int,input().split())

A = list(map(int,input().split()))
B = list(map(int,input().split()))

A.sort()
B.sort(reverse=True)

for i in range(k):
  if A[i] > B[i]:
    break
  else: 
    A[i],B[i] = B[i],A[i]

print(sum(A))

μ½”λ“œ λ§ˆμ§€λ§‰ λΆ€λΆ„λ§Œ μˆ˜μ •ν•΄μ£Όλ©΄ μ™„λ²½!

 

728x90