[D+2] 계속 문제를 풀어보자 !! ⭐️
문제
헬스장에서 N명의 회원이 운동을 하고 있다. 각 회원은 1에서 N사이의 번호가 부여되어 있고, i번 회원이 들 수 있는 역기의 무게는 Wi이다. 회원들 사이에는 M개의 친분관계 (Aj, Bj)가 있다. (Aj, Bj)는 Aj번 회원과 Bj번 회원이 친분 관계가 있다는 것을 의미한다. i번 회원은 자신과 친분 관계가 있는 다른 회원보다 들 수 있는 역기의 무게가 무거우면 자신이 최고라고 생각한다. 단, 누구와도 친분이 없는 멤버는 본인이 최고라고 생각한다.
코드
import sys
from collections import defaultdict
N,M= map(int,input().split())
weight = list(map(int,input().split()))
member=list(list(map(int,input().split())) for _ in range(M))
dic=defaultdict(list)
for a,b in enumerate (member,start=1):
dic[b[0]].append(b[1])
dic[b[1]].append(b[0])
count = 0
for i in range(1, N+1):
# 친구가 없으면 자신이 최고라고 생각
if not dic[i]:
count += 1
else:
# 친구들보다 무게를 더 많이 들 수 있으면 자신이 최고라고 생각
if all(weight[i-1] > weight[friend-1] for friend in dic[i]):
count += 1
print(count)
코드 설명
쉬운 문제라고 생각했는데, 처음에 문제 이해하는 데 시간이 좀 걸렸던 것 같다.
dfs 문제인가 싶었는데 너무 복잡하게 생각안하고 딕셔너리를 이용하여 구현해보았다.
더 간단한 방법이 있을 것 같은데 생각해보면 좋을 것 같다🤔
'알고리즘' 카테고리의 다른 글
[백준]- 2225번 (0) | 2025.05.17 |
---|---|
[Softeer] - 성적 평균 (0) | 2025.04.25 |
[프로그래머스] -PCCE 기출문제 9번 / 지폐 접기 (4) | 2025.04.25 |
[프로그래머스] - PCCP 기출문제 1 (0) | 2025.04.25 |
[백준]- 9086번 (0) | 2025.04.25 |