문제 링크
https://programmers.co.kr/learn/courses/30/lessons/92342
코딩테스트 연습 - 양궁대회
문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원
programmers.co.kr
풀이
- 중복 조합 사용
- Counter 함수 : 주어진 배열에 등장하는 알파벳을 key, 그것의 개수를 value로 하는 딕셔너리 반환
from itertools import combinations_with_replacement
from collections import Counter
def solution(n, info):
# 가장 큰 차이
max_result = 0
# 가장 큰 차이가 날 때의 조합
max_combine = {}
# 중복 조합
combine = list(combinations_with_replacement(range(11),n))
for num in combine:
cnt = Counter(num)
# s1는 라이언 점수, s2는 어피치 점수
s1, s2 = 0,0
for i in range(1,11):
# 쏜 개수가 더 많으면 라이언 점수 더하기
if info[10-i] < cnt[i]:
s1 += i
# 어피치가 더 많이 쐈으면 어피치 점수 더하기
elif info[10-i] > 0 :
s2 += i
# 두 명의 점수차
result = s1 - s2
# 최대 점수차이면 갱신
if result > max_result:
max_combine = cnt
max_result = result
if max_result > 0:
answer =[0] * 11
for i in max_combine:
answer[10-i] = max_combine[i]
return answer
else:
return [-1]
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level2] 순위 검색 - python (0) | 2022.03.08 |
---|---|
[프로그래머스][level2] 피로도 -python (0) | 2022.03.08 |
[백준 15683번] 감시 - python (0) | 2022.02.25 |
[백준 13460번] 구슬 탈출 2 - python (0) | 2022.02.25 |
[백준 12851번] 숨바꼭질 2 - python (0) | 2022.02.24 |