https://school.programmers.co.kr/learn/courses/30/lessons/92342
1. n의 제한이 10이기에 일단 나는 중복조합을 사용해도 된다고 생각을 하였다.
2. info를 보면 점수가 첫번째인덱스가 10이고 줄어드는 형식으로 되어있기에 temprion에도 만약 내가 맞춘 점수에 해당하는 인덱스에 1이 증가하도록 하였다.
그리고 나서 해당하는 temprion과 info를 비교하면서 만약 temprion이 크다면 라이언이 해당하는 점수를 얻고 아닌데 만약 Info[k]에만 값이 있다면 어피치 점수를 추가해주었다. else를 쓰게 되면 둘다 점수없을때도 어피치가 얻기에
3. 그리고 나서 둘의 차가 우리가 처음준 0보다 크다면 라이언이 승리하는 거고 점수차를 갱신해주고 answer에 temprion을 대입
그래서 전체 돌고나면 점수차 제일 클때가 나오게 된다. 시간복잡도는 O(n)
from itertools import combinations_with_replacement as cwr
def solution(n, info):
answer = [-1]
maxscore = 0
for i in list(cwr(range(0,11), n)):
temprion = [0]*11
for j in i:
temprion[10-j] += 1
rionscore, appeachscore = 0, 0
for k in range(0,11):
if temprion[k]>info[k]:
rionscore += 10-k
elif info[k]:
appeachscore += 10-k
if rionscore - appeachscore > maxscore:
maxscore = rionscore - appeachscore
answer = temprion
return answer
'알고리즘' 카테고리의 다른 글
1259 - swift로풀기 (0) | 2023.09.05 |
---|---|
파괴되지 않은 건물 - pYthon (0) | 2023.06.19 |
주차요금계산 - 22kakao blind recruitment - python (0) | 2023.06.16 |
등산코스정하기-python(kakao22 season) (0) | 2023.06.12 |
두 큐 합 같게 만들기 - Python으로 풀이 (0) | 2023.06.11 |