λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/Programmers

[Programmers] μ΅œμ†Ÿκ°’ λ§Œλ“€κΈ°

 

 

문제 

 

길이가 같은 λ°°μ—΄ A, B λ‘κ°œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 각 배열은 μžμ—°μˆ˜λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
λ°°μ—΄ A, Bμ—μ„œ 각각 ν•œ 개의 숫자λ₯Ό 뽑아 두 수λ₯Ό κ³±ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 과정을 λ°°μ—΄μ˜ 길이만큼 λ°˜λ³΅ν•˜λ©°, 두 수λ₯Ό κ³±ν•œ 값을 λˆ„μ ν•˜μ—¬ λ”ν•©λ‹ˆλ‹€. μ΄λ•Œ μ΅œμ’…μ μœΌλ‘œ λˆ„μ λœ 값이 μ΅œμ†Œκ°€ λ˜λ„λ‘ λ§Œλ“œλŠ” 것이 λͺ©ν‘œμž…λ‹ˆλ‹€. (단, 각 λ°°μ—΄μ—μ„œ k번째 숫자λ₯Ό λ½‘μ•˜λ‹€λ©΄ λ‹€μŒμ— k번째 μˆ«μžλŠ” λ‹€μ‹œ 뽑을 수 μ—†μŠ΅λ‹ˆλ‹€.)

예λ₯Ό λ“€μ–΄ A = [1, 4, 2] , B = [5, 4, 4] λΌλ©΄

  • Aμ—μ„œ 첫번째 숫자인 1, Bμ—μ„œ 첫번째 숫자인 5λ₯Ό 뽑아 κ³±ν•˜μ—¬ λ”ν•©λ‹ˆλ‹€. (λˆ„μ λœ κ°’ : 0 + 5(1x5) = 5)
  • Aμ—μ„œ λ‘λ²ˆμ§Έ 숫자인 4, Bμ—μ„œ μ„Έλ²ˆμ§Έ 숫자인 4λ₯Ό 뽑아 κ³±ν•˜μ—¬ λ”ν•©λ‹ˆλ‹€. (λˆ„μ λœ κ°’ : 5 + 16(4x4) = 21)
  • Aμ—μ„œ μ„Έλ²ˆμ§Έ 숫자인 2, Bμ—μ„œ λ‘λ²ˆμ§Έ 숫자인 4λ₯Ό 뽑아 κ³±ν•˜μ—¬ λ”ν•©λ‹ˆλ‹€. (λˆ„μ λœ κ°’ : 21 + 8(2x4) = 29)

즉, 이 κ²½μš°κ°€ μ΅œμ†Œκ°€ λ˜λ―€λ‘œ 29λ₯Ό return ν•©λ‹ˆλ‹€.

λ°°μ—΄ A, Bκ°€ μ£Όμ–΄μ§ˆ λ•Œ μ΅œμ’…μ μœΌλ‘œ λˆ„μ λœ μ΅œμ†Ÿκ°’μ„ return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.

 

 

μ œν•œμ‚¬ν•­
  • λ°°μ—΄ A, B의 크기 : 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜
  • λ°°μ—΄ A, B의 μ›μ†Œμ˜ 크기 : 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜

 

λ‚˜μ˜ μ½”λ“œ 

 

def solution(A,B):
    k = 0
    A.sort(reverse=False)
    B.sort(reverse=True)

    for i in range(len(A)):
        k += A[i] * B[i]
    return k
뢄석 > ν•œ 배열을 μ˜€λ¦„μ°¨μˆœ λ‹€λ₯Έ 배열은 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ 후에 μΈλ±μŠ€κ°€ 같은 수 끼리 κ³±ν•΄μ£Όμ—ˆμ„ λ•Œ μ΅œμ†Ÿκ°’μ„ ꡬ할 수 μžˆλ‹€. 

 

 

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ΅œμ†Ÿκ°’ λ§Œλ“€κΈ°

길이가 같은 λ°°μ—΄ A, B λ‘κ°œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 각 배열은 μžμ—°μˆ˜λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€. λ°°μ—΄ A, Bμ—μ„œ 각각 ν•œ 개의 숫자λ₯Ό 뽑아 두 수λ₯Ό κ³±ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 과정을 λ°°μ—΄μ˜ 길이만큼 λ°˜λ³΅ν•˜λ©°, 두 수λ₯Ό κ³±

programmers.co.kr