문제
1차원 보드칸, 주사위 3개
주사위는 각각 1부터 S1, S2, S3까지의 숫자 중 한개가 나옴
캐릭터는 좌표 1에서 시작하여 주사위 3개의 눈금 합만큼 이동
몬스터가 있는 좌표가 주어졌을 때, 주사위를 한번 굴려서 몬스터를 만나지 않을 확률구하기
monster는 몬스터의 위치를 담은 배열, 길이는 1이상 99이하
monster의 각 원소는 2이상 100이하, 중복 없음
각 주사위의 최댓값 2 <= S1 <= 30, 2 <= S2 <= 30, 2 <= S3 <= 40
구한 확률에 1000을 곱한 후 정수 부분만 리턴
입출력 예시
monster | S1 | S2 | S3 | return |
---|---|---|---|---|
[4,9,5,8] | 2 | 3 | 4 | 500 |
접근
나올 수 있는 주사위 경우의 수를 모두 확인하며 해당 칸에 몬스터가 있는지 센다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(monster, S1, S2, S3):
answer = -1
list_s1 = list(range(1, S1+1))
list_s2 = list(range(1, S2+1))
list_s3 = list(range(1, S3+1))
total_list = []
for s1 in list_s1:
for s2 in list_s2:
for s3 in list_s3:
total_list.append(s1+s2+s3+1)
monsterCnt = 0
for pos in total_list:
if pos in monster:
monsterCnt+= 1
totalLen = len(total_list)
answer = ((totalLen - monsterCnt) / totalLen) * 1000
return int(answer)