λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[Python ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] Summer/Winter Coding(~2018) > μ†Œμˆ˜ λ§Œλ“€κΈ°

by Vada Kim 2021. 5. 3.
728x90
λ°˜μ‘ν˜•

programmers.co.kr/learn/courses/30/lessons/12977

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ†Œμˆ˜ λ§Œλ“€κΈ°

μ£Όμ–΄μ§„ 숫자 쀑 3개의 수λ₯Ό λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μˆ«μžλ“€μ΄ λ“€μ–΄μžˆλŠ” λ°°μ—΄ numsκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, nums에 μžˆλŠ” μˆ«μžλ“€ 쀑 μ„œλ‘œ λ‹€λ₯Έ 3개λ₯Ό 골라 λ”ν–ˆμ„ λ•Œ

programmers.co.kr

μ£Όμ–΄μ§„ 숫자 쀑 3개의 수λ₯Ό λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μˆ«μžλ“€μ΄ λ“€μ–΄μžˆλŠ” λ°°μ—΄ numsκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, nums에 μžˆλŠ” μˆ«μžλ“€ 쀑 μ„œλ‘œ λ‹€λ₯Έ 3개λ₯Ό 골라 λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.μ œν•œμ‚¬ν•­

  • nums에 λ“€μ–΄μžˆλŠ” 숫자의 κ°œμˆ˜λŠ” 3개 이상 50개 μ΄ν•˜μž…λ‹ˆλ‹€.
  • nums의 각 μ›μ†ŒλŠ” 1 이상 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©°, μ€‘λ³΅λœ μˆ«μžκ°€ λ“€μ–΄μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

 

 

 

1. 처음 μ§  μ½”λ“œ

def solution(nums):
    answer = 0
    for i in range(len(nums)-2):
        for j in range(i+1, len(nums)-1):
            for k in range(j+1, len(nums)):
              	val = nums[i]+nums[j]+nums[k]
              	flg = False
              	for dig in range(2, (val//2)+1):
                	if val%dig == 0: flg = True
              	if not flg: answer += 1
    return answer

 

 

 

2. λ„ˆλ¬΄ λ³΅μž‘ν•˜μ—¬ μ½”λ“œλ₯Ό λ‹¨μΆ•ν•΄λ³΄μ•˜λ‹€.

from itertools import combinations
def solution(nums):
    answer = 0
    for i in map(sum, combinations(nums, 3)):
        flg = False
        for dig in range(2, i//2 + 1):
            if i%dig==0: flg = True
        if not flg: answer += 1

    return answer
  • combinations ν•¨μˆ˜λŠ” μ£Όμ–΄μ§„ λ°°μ—΄μ—μ„œ n개의 쑰합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. μ‘°ν•© 리슀트λ₯Ό 받아와 κ³§λ°”λ‘œ map ν•¨μˆ˜λ‘œ λ¬Άμ–΄ ν•© map리슀트둜 λ§Œλ“€μ—ˆλ‹€.
  • μ†Œμˆ˜λŠ” 2λΆ€ν„° 자기 μžμ‹ //2 κΉŒμ§€λ‘œ λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€μ§€ μ•ŠλŠ”λ‹€.
728x90
λ°˜μ‘ν˜•