티스토리 뷰

1. 문제

2. 소스코드 (Python3)

from itertools import product

 

def solution(monster, S1, S2, S3):

    p = product(range(S1), range(S2), range(S3))

    case = len([x for x in p if sum(x) + 4 not in monster])

    return int(case / (S1 * S2 * S3) * 1000)

 

3. 고찰

 

1) product 함수

여러 list에서 원소를 하나씩 뽑아 모든 조합을 찾을 때 사용한다. 이를 곱집합 이라고 한다.

from itertools import product

prod = product(list1, list2, list3)

ex. list1 = [0, 1, 2], list2 = range(2)인 경우

product(list1, list2) 의 결과는 (0,1), (0,2), (1, 0), (1, 1), (2, 0), (2, 1) 이다.

그리고 같은 리스트에 대해서 product를 적용하는 경우,

prod = product(list, repeat = repeat_num) 으로 쓸 수 있다.

 

2) sum 함수

sum(iterable, start) 로 사용한다.

iterable은 리스트, 튜플, 딕셔너리 등이 될 수 있고, 이 때 그 객체안의 원소는 모두 정수이어야 한다.

start는 sum값을 구할 때 초기에 더하는 값이다.

즉, 위 함수는 리스트 원소 합 + start 를 리턴한다.

 

3) int 함수

int(value, base)는 value를 정수타입으로 리턴한다. 이때, value의 소수점 이하는 버린다.

base의 디폴트는 10이다. base는 2~36사이의 값을 입력할 수 있다.

base는 밑을 뜻하고, base=2로 설정하면 value를 2진수의 정수로 리턴한다.

 

1) product 함수

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함