풀이
상근이와의 거리가 2이하인 친구들의 인원수를 찾아내는 문제이다.
주어진 친구목록을 튜플로 리스트에 저장한다.
친구관계 x, y 는 y 가 항상 x 보다 크기에 상근이를 지칭하는 1 은 항상 x 에 위치한다.
때문에 상근이와 거리가 1인 친구들을 찾을 경우 x 가 1 인 y 들을 찾아주고 리스트 f 에 저장한다.
리스트 f 에 저장된 친구들을 기준으로 친구의 친구를 찾으면된다.
이때 친구의 친구가 상근이의 친구보다 학번이 작거나 클 수 있으니 x, y 에 대해서 모두 찾아주면된다.
이후 찾은 모든 친구들의 학번에서 중복되는 학번을 set 를 통해 걸러주고 상근이가 포함이 되어있을 경우 상근이를 제외한 인원수를 출력해주면된다.
소스코드
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
l = [list(map(int, input().split())) for _ in range(m)]
f = []
ff = []
for x, y in l:
if x == 1:
f.append(y)
for x, y in l:
if x in f:
ff.append(y)
elif y in f:
ff.append(x)
fff = list(set(f + ff))
if 1 in fff:
fff.remove(1)
print(len(fff))