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 ๊น์ง๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค.