728x90
문제
지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람이 친구이거나, A와 친구이고, B와 친구인 C가 존재해야 된다. 여기서 가장 유명한 사람은 2-친구의 수가 가장 많은 사람이다. 가장 유명한 사람의 2-친구의 수를 출력하는 프로그램을 작성하시오.
A와 B가 친구면, B와 A도 친구이고, A와 A는 친구가 아니다.
입력
첫째 줄에 사람의 수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 각 사람이 친구이면 Y, 아니면 N이 주어진다.
출력
첫째 줄에 가장 유명한 사람의 2-친구의 수를 출력한다.
문제가 무슨소리를 하는건지 2-친구라는 개념 일단 서로 친구 이건 이해가 간다 그리고 A와 친구이고, B와 친구인 C가 존재 이 말은 서로 친구의 교집합이 있다면 2-친구라는뜻
일단 서로 친구인 경우를 구해주고 한명씩 친구의 교집합을 비교해 2-친구들 을 추가해준다 .
a=int(input())
d={}
for i in range(a):
t=input()
for j in range(a):
if t[j]=="Y":
d.setdefault(j,set())
d.setdefault(i,set())
d[i].add(j)
d[j].add(i)
d1={"q":0}
for i in d.keys():
for j in d.keys():
if i!=j:
if d[i]&d[j] and j not in d[i]:
d1.setdefault(i,len(d[i]))
d1[i]+=1
p=0
if d:
p=max(map(lambda x:len(x),d.values()))
print(max(max(d1.values()),p))
'알고리즘 > 백준' 카테고리의 다른 글
1262.알파벳 다이아몬드 (0) | 2023.02.27 |
---|---|
1024.수열의 합 (0) | 2023.02.26 |
2839.설탕 배달 (0) | 2023.02.25 |
1935.후위 표기식2 (0) | 2023.02.24 |
1269.대칭 차집합 (0) | 2023.02.22 |
댓글