1. 문제
https://programmers.co.kr/learn/courses/30/lessons/77486
2. 풀이
- 계속 시간 초과가 나서 찾아보니 share가 0이 되면 멈추라고 하던데.. 나는 멈추는데도 계속 시간초과가 났다.
- 그래서, list.index(name)함수로 인덱스 번호 찾던걸, dictionary로 변경하니 시간 초과가 안걸렸다.
- dictionary가 확실히 빠르고 효율성이 좋은 듯.. 애용하자 ..ㅎㅋ
내가 푼 방법
- seller 를 for문을 돌려서 하나씩 answer에 이익을 더해준다.
- 이때 seller의 referral이 존재하면 while문으로 계속 referral을 검색해서 계속 추천인들의 이익을 더해준다.
- referral이 - 이거나 share가 0이 되면 중지!
3. 코드
def solution(enroll, referral, seller, amount):
answer = [0]*len(enroll)
# 칫솔 판매 금액 개당 백원
for idx, money in enumerate(amount):
amount[idx] = money * 100
# enroll 리스트로 dict 만들기
enroll_dict = {}
for idx,name in enumerate(enroll):
enroll_dict[name] = idx
# seller 판매한거 for문
for idx, name in enumerate(seller):
idx_seller = enroll_dict[name]
ref_name = referral[idx_seller]
share = int(amount[idx] * 0.1)
answer[idx_seller] += amount[idx] - share
while (ref_name != "-" and share):
idx_ref = enroll_dict[ref_name]
ref_name = referral[idx_ref]
answer[idx_ref] += share - int(share*0.1)
share = int(share*0.1)
return answer
'ALGORITHM > Kakao' 카테고리의 다른 글
[Python] 합승 택시 요금 (0) | 2022.03.31 |
---|---|
[Python] 순위 검색 (0) | 2022.03.31 |
[Python] 사라지는 발판 (0) | 2022.03.24 |
[Python] 행렬 테두리 회전하기 (0) | 2022.03.22 |
[Python] 파괴되지 않은 건물 (0) | 2022.03.16 |