728x90
https://programmers.co.kr/learn/courses/30/lessons/92342
- 생각
- 라이언이 쏠 과녁 수 최대가 10이니 라이언이 과녁 쏘는 경우의 수 모두 완탐..
- from itertools import combinations_with_replacement : 중복조합
- 완탐 해도 시간초과 안 날지 걱정
- 예제 3번의 라이언이 과녁 쏘는 경우의 수 약 18만....
- 걱정되었지만 다른 방법 생각 안나서 진행함
- 라이언이 쏠 수 있는 각 경우의 수에서
- 점수계산 후 갱신
- 라이언이 쏠 과녁 수 최대가 10이니 라이언이 과녁 쏘는 경우의 수 모두 완탐..
- 코드
from itertools import combinations_with_replacement
def solution(n, info):
# 라이언이 쏠 수 있는 모든 경우
result = [-1]
max_score_dif = 0
for i in list(combinations_with_replacement(range(0,11),n)):
# 라이언 과녁
rion = [0]*11
for j in i:
rion[j] += 1
rion = rion[::-1]
rion_score = 0
apeach_score = 0
# 라이언 어피치 점수 계산
for n in range(0,11):
if rion[n] > info[n]:
rion_score += 10-n
elif info[n]:
apeach_score += 10-n
# 라이언이 이겼고(점수차가 양수), 점수차가 이전 경우보다 크다면
score_dif = rion_score - apeach_score
if score_dif > max_score_dif:
# 가장 낮은 점수를 더 많이 맞힌 경우가 result -> 뽑을 때 작은 것부터 뽑아서 자동으로 됨
max_score_dif = score_dif
result = rion
return result
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 15649. N과 M (1) ~ (4) - Python (0) | 2022.06.18 |
---|---|
[백준] 2805. 나무 자르기 - Python (0) | 2022.06.17 |
[프로그래머스] Lv.2 주차 요금 계산 - Python (0) | 2022.06.16 |
[백준] 11404. 플로이드 - Python (0) | 2022.06.15 |
[백준] 7569. 토마토 - Python (0) | 2022.06.15 |
댓글