티스토리 뷰

1. 문제

 

2. 소스코드 (Python3)

from itertools import combinations

 

def solution(n):

    sieve = [True] * n

    for i in range(2, int(n ** 0.5) + 1):

        if sieve[i]:

            for j in range(i * 2, n, i):

                sieve[j] = False

 

    prime_numbers = [i for i in range(2, n) if sieve[i]]

    return [sum(c) for c in combinations(prime_numbers, 3)].count(n)

 

3. 고찰

1) 루트값 구하기

매번 math모듈의 sqrt(n)함수를 이용하였는데,

n ** 0.5 로 구할 수 있다.

 

2) combinations 함수

조합 : n개의 원소를 사용해서 순서의 관계없이 r개의 배열로 나타내는 것.

ex. [1,2,3]으로 원소 2개짜리 배열을 만들면

(1,2), (1,3), (2,3) 이다.

즉, 현재 순서를 바꾸지 않으면서 몇 개의 원소를 뽑고 싶을 때 사용할 수 있다.

from itertools import combinations

comb = combinations(list, n)    # list중 n개의 원소를 뽑는 경우를 모두 리턴한다.

 

3) count()함수

list.count(value)    # list안에서 value를 갖는 원소의 개수를 리턴한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함