소스 코드

# 직원, 칭찬
n,m = map(int,input().split())
# 칭찬 누적 점수
board = [0 for _ in range(n+1)]
# 직속상사 정보
user = list(map(int,input().split()))
for q in range(n):
    # 직속 상사, 본인 번호
    user[q] = [user[q],q+1]
# 직원 번호 순으로 정렬
user.sort(key=lambda x:x[1])

for w in range(m):
    # 칭찬을 받은 직원, 점수
    a,b = map(int,input().split())
    
    # 칭찬 누적 점수 추가
    board[a] += b

# 칭찬 시작 및 점수 갱신
for e in range(1,n):
    my_idx = user[e][1]
    u_idx = user[e][0]

    board[my_idx] += board[u_idx]

print(*board[1:])

 


해결 방법

1. 받는 직원 정보(user)에는 상사의 번호가 들어옴

2. 상사 번호와 직원 번호를 햇갈리면 안됨

ex) tc의 -1 1 2 3 4인 경우에, 1번(사장)의 상사는 -1(없음), 2번 직원의 직속상사는 1번

3. 한 사람당 1회 칭찬인지 아닌지 알 수 없음


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.