https://programmers.co.kr/learn/courses/30/lessons/77486
이 문제는 Programmers의 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제집에 있는 문제로 Level 3에 해당되는 문제입니다.
해당 문제는 조직원, 각 조직원 별 추천인, 판매 직원, 각 판매에 대한 판매액이 입력 값으로 주어지며 모든 조직원의 수익을 계산하는 것이 목표입니다.
접근 방식
문제에 명시되어 있는 조건에 따라 구현을 했습니다.
추천한 사람 - 추천받은 사람의 관계는 부모 - 자식 관계와 같으며 조직은 이러한 관계로 이루어진 트리 구조입니다.
저는 조직을 구현할 때 해시를 이용했으며 예시는 아래와 같습니다.
organization [추천받은 사람] = (추천인, 추천받은 사람의 인덱스)
각 판매 실적 별 조직원의 수익 계산은 for문과 while문을 조합해서 구현했으며 각 조직원의 수익은 아래 식에 따라 계산했습니다.
추천인에게 나눌 수익 = math.floor((현재 조직원이 얻은 수익) * 0.1)
현재 조직원이 실제 가질 수익 = (현재 조직원이 얻은 수익) - (추천인에게 나눌 수익)
전체 코드
import math
def solution(enroll, referral, seller, amount):
answer = [0] * len(enroll)
organization = {}
for idx in range(len(enroll)):
organization[enroll[idx]] = (referral[idx], idx)
for idx in range(len(seller)):
cp, ca = seller[idx], amount[idx] * 100
up, ci = organization[cp]
sh = math.floor(ca * 0.1)
answer[ci] += ca - sh
while not (sh == 0 or up == "-"):
ca = sh
up, ci = organization[up]
sh = math.floor(ca * 0.1)
answer[ci] += ca - sh
return answer
읽어 주셔서 감사합니다 :)
잘못된 부분이 있다면 댓글로 편히 알려주세요😊
'PS > Python' 카테고리의 다른 글
[백준] 21608 - 상어 초등학교 (파이썬, Python) (0) | 2021.08.25 |
---|---|
[백준] 15683 - 감시 (파이썬, Python) (0) | 2021.08.25 |
[Programmers] 행렬 테두리 회전하기(파이썬, Python) (0) | 2021.07.18 |
[Programmers] 로또의 최고 순위와 최저 순위 (파이썬, Python) (0) | 2021.07.18 |
[백준] 14891 - 톱니바퀴 (파이썬, Python) (0) | 2021.07.08 |