알고리즘

[Softeer] - 우물 안 개구리

예림밈 2025. 4. 25. 16:16

[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