[프로그래머스 Lv2.] 양궁 대회(python)
1. 문제
문제 설명
제한사항
입출력 예시
입출력 예 설명
2. 풀이 과정
내가 생각한 진행 과정
- 우선 중복조합(combinations_with_replacement)을 이용해 lion이 점수낼 수 있는 모든 경우를 뽑아내기
- 하나하나 돌아가면서 info처럼 lion의 경우를 리스트로 표현
- 라이언 점수랑 어피치 점수 비교하기
- a = b일 경우는 어피치가 k점을 가져감
- k점을 여러 발 맞혀도 k점 보다 많은 점수를 가져가는 게 아니고 k점만 가져감
- 또한 a = b = 0 인 경우, 누구도 k점을 가져가지 않음
- 라이언이 어피치보다 점수가 높다면 answer을 lion_now로 바꿔주는데, 이때, 라이언이 어피치와 가장 큰 점수 차이로 이겨야하기때문에, mymax를 이용해 가장 큰 점수차이를 갱신해줘야함
- 라이언이 우승할 수 없다면, answer가 갱신되지 않고 처음값인 []를 끝까지 가지고있을 것이므로 마지막에 answer가 []이면 [-1]을 리턴해야함
최종 코드
from itertools import combinations_with_replacement
def solution(n, info):
answer = []
mymax = 0
for temp in list(combinations_with_replacement(range(0, 11), n)):
lion_now = [0 for _ in range(11)]
for t in temp:
lion_now[10 - t] += 1
# 라이언 점수랑 어피치 점수 비교함
lion = 0
apeach = 0
for i in range(11):
l, a = lion_now[i], info[i]
if l == a == 0:
continue
if l > a:
lion += (10 - i)
else:
apeach += (10 - i)
if lion > apeach:
if mymax < (lion - apeach):
mymax = lion - apeach
answer = lion_now
if answer == []:
return [-1]
return answer
다른 풀이 방법
Author And Source
이 문제에 관하여([프로그래머스 Lv2.] 양궁 대회(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@78eeeeeee/프로그래머스-Lv2.-양궁-대회python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)