소스 코드
# 직원, 칭찬
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 촌수계산 - PYTHON #2644 (0) | 2023.07.02 |
---|---|
[BOJ/백준 코딩] 근손실 - PYTHON #18429 (0) | 2023.06.25 |
[BOJ/백준 코딩] Final Price - PYTHON #28224 (0) | 2023.06.17 |
[BOJ/백준 코딩] 오렌지먹은지오랜지 - PYTHON #27962 (0) | 2023.06.11 |
[BOJ/백준 코딩] 구간 합 구하기 - PYTHON #2042 (0) | 2023.06.04 |