honey_pot
[Python] 양궁대회 본문
https://school.programmers.co.kr/learn/courses/30/lessons/92342
itertools의 combinations_with_replacement를 알게 된 문제
combinations_with_replacement는 combinations와 다르게
튜플이 AB인 경우 AA, AB, BB 처럼 요소의 반복을 허용하고 정렬된 순서로 나오기 때문에
문제가 원하는 대로 가장 작은 점수부터 채워져서 나온다
2단계 시작 때는 문제부터 이해 안 갔는데 이번엔 그래도 시도는 해봤다 다음에 다시 풀어봐야지
찾아보니 dfs로도 풀던데 n이 클때는 조합을 만들때 시간 초과가 뜰테니 dfs 방식이 유용할 것 같다
어피치와 라이언의 점수를 비교하는 부분에서 더 복잡하게 짰었는데 zip을 이용하면 직관적이고 편하다
[-1]을 리턴하는 조건도 answer가 존재하면 answer를, 존재하지 않으면 [-1]을 리턴하는 코드로 작성했는데
처음부터 [-1]로 초기화하면 코드 수도 줄고 한 눈에 딱 들어온다. 역시 남의 코드는 똑똑하다
-> 참고 : https://ye0nn.tistory.com/18
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
|
from itertools import combinations_with_replacement as cwr
def solution(n, info):
answer = [-1]
maxgap = float('-inf')
for combi in cwr(range(0,11),n):
apeach, ryan = 0,0
r_info = [0]*11
for score in combi:
r_info[10-score] += 1
for score, (a, r) in enumerate(zip(info, r_info)):
if a == r == 0:
continue
elif a >= r:
apeach += (10 -score)
else:
ryan += (10-score)
if ryan > apeach :
gap = ryan-apeach
if gap > maxgap:
maxgap = gap
answer = r_info
return answer
|
cs |
'문제 풀이' 카테고리의 다른 글
[Python] 쿼드압축 후 개수 세기 (0) | 2022.09.21 |
---|---|
[Python] 2개 이하로 다른 비트 (1) | 2022.09.21 |
[Python] 점프와 순간 이동 (0) | 2022.09.20 |
[Python] [3차] 압축 (0) | 2022.09.20 |
[python] k진수에서 소수 개수 구하기 (0) | 2022.09.18 |
Comments