티스토리 뷰
<중요한 포인트>
- .index() 함수로 인덱스를 찾아가면서 풀었더니 시간초과가 나왔다.
- 딕셔너리로 바로바로 접근해야 시간내에 해결할 수 있다.
- POINT : dict(zip(enroll, referral))
from math import trunc
# 1.아이디어
# - seller 순서대로 amount연결해 이익 값 구하고, enroll에서의 순서값을 구해, referral순서로 추천인 찾아 10%배분.
# - 이익값 저장할 List 초기화.(순서는 enroll)
# - 종료조건 : referral 이'-' or total 의 10%가 1미만인 경우 total그대로 salary에 저장후 종료
def solution(enroll, referral, seller, amount):
salary = dict(zip(enroll, [0]*len(enroll)))
dic = dict(zip(enroll, referral))
for s,m in zip(seller, amount):
total = m * 100
while True:
#10%가 1 미만이면 현재 total 나한테 다 저장
if total * 0.1 < 1:
salary[s] += total
break
#추천인 없으면
if dic[s] == '-':
salary[s] += (total - trunc(total*0.1))
break
salary[s] += (total - trunc(total*0.1))
total = trunc(total*0.1)
s = dic[s]
return list(salary.values())
'코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
[백준] 12865 <DP> 평범한 배낭 - python (0) | 2022.05.04 |
---|---|
[프로그래머스] LV.3 <카카오> 양과 늑대 - python (0) | 2022.04.16 |
[프로그래머스] LV.2 <카카오> 주차 요금 계산 - python (0) | 2022.04.14 |
[백준] 💚1504 <최단거리> 암호만들기 - python (0) | 2022.04.13 |
[백준] 💚1759 <순열/조합> 암호만들기 - python (0) | 2022.04.12 |