๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ

๋ฌธ์ œ

์ฃผ์–ด์ง„ ์ˆซ์ž ์ค‘ 3๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ˆซ์ž๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด nums๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,

nums์— ์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘ ์„œ๋กœ ๋‹ค๋ฅธ 3๊ฐœ๋ฅผ ๊ณจ๋ผ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์กฐ๊ฑด

  • nums์— ๋“ค์–ด๊ฐ€๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋Š” 3๊ฐœ ์ด์ƒ 50๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • nums์˜ ๊ฐ ์›์†Œ๋Š” 1์ด์ƒ 1,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

 


def solution(nums):
    answer = 0
    arr = []
    for i in combination(nums, 3):
        arr.append(sum(i))
    for i in range(len(arr)):
        for j in range(2,arr[i]):
            if arr[i]%j==0:
                break
        else: answer += 1
    return answer

def combination(nums, r):    #์กฐํ•ฉ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์ž‘์„ฑ

    for i in range(len(nums)):
        if r == 1:
            yield[nums[i]]
        else:
            for j in combination(nums[i+1:], r-1):
                yield[nums[i]] + j

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค‘ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์กฐํ•ฉ์„ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

์ œ๋„ค๋ ˆ์ดํ„ฐ์™€ ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ ์ฐจ์ด๋Š” return์„ ์‚ฌ์šฉํ•˜๋ƒ yield๋ฅผ ์‚ฌ์šฉํ•˜๋ƒ์ธ๋ฐ,

return์€ ํ•œ ํ•จ์ˆ˜๋‹น ํ•œ๋ฒˆ ์‹คํ–‰๋˜๊ณ , ์‹คํ–‰๋˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์ง€๋งŒ

yield์€ ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ž…๋ ฅ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ž…๋ ฅ๋œ ๊ฐ’๋“ค์€ next()๋ฅผ ํ†ตํ•ด ์ž…๋ ฅ ๋œ ๊ฐ’์ด ๋ชจ๋‘ ์†Œ์ง„๋ ๋•Œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ

๋ฐ˜ํ™˜๋œ๋‹ค.