- [프로그래머스]-이모티콘할인행사(swift)2023년 05월 04일
- 2료일
- 작성자
- 2023.05.04.:58
우리가 생각해야하는것은 1. 가입자를 늘리자. 2. 그중 판매액은 최대로
우선 이모티콘의 최대개수는 7개이고 할인율은 4개이다. 그래서 4의7승의 경우의수가 나오고 인원은 최대 100명이므로 곱해보면 1,600,000대략번의 횟수가 나오기에 완전탐색 가능하다고 생각을 하였다.
그렇다면 중복순열을 일일이 구현해야할까? 라고 의문점이 들었다 왜냐면 파이썬은 앵간한건 구현이 되어있기 때문이다. 찾아보니 product라고 중복순열을 만들어주는 모듈이 있엇다. 그래서 바로 냠냠!
할인율로 조합될수 있는 모든 경우의 수를 구해주고 첫번째의 경우의수부터 끝의 경우의수까지 루프를 돌면서 유저가 가지고 있는 정보들가 비교해서 제일 많이 구독시킬수 있는 경우에서 가장 total_price가 많은 경우를 answer에 갱신하면서 다 돌고나서 answer를 출력해주는 경우이다. 처음 생각할때 너무 어떻게 해야할지 막막하였으나 그냥 막 코딩을하다보니 풀려서 놀란 case.
from itertools import product def solution(users, emoticons): saledata = [10,20,30,40] 중복순열할인데이터 = [] answer = [0,0] # 우선 4의 7승의 조합을 만들자라고 생각을 하였다. => 중복순열 for i in product(saledata, repeat = len(emoticons)): 중복순열할인데이터.append(list(i)) for j in 중복순열할인데이터 : num_subscribe = 0 total_price = 0 for user in users : salevalue, maxprice = user temp_price = 0 for index, salepercent in enumerate(j): if(salevalue<=salepercent): temp_price += (emoticons[index] * (100- salepercent) /100) if(temp_price >= maxprice): num_subscribe+=1 else: total_price += temp_price if( answer[0] < num_subscribe): answer[0] = num_subscribe answer[1] = int(total_price) elif answer[0]==num_subscribe and answer[1] < total_price: answer[1]= int(total_price) return answer
'알고리즘' 카테고리의 다른 글
백준2143- python (gold 3) (0) 2023.05.21 1043-python (1) 2023.05.11 알고리즘 2023kakaoblind-개인정보 수집 유효기간(python) (0) 2023.04.30 프로그래머스-귤고르기(Python) (0) 2023.04.29 1647 - swift (1) 2023.04.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)