import sys
# 별의 번호가 1번부터 시작
# 리스트의 인덱스는 0부터 시작
# 0은 버리는 칸이고, 1~12번 까지 담을 수 있게 총 13칸을 만듦
A = [[0]*13 for _ in range(13)]
# 선분이 12개라서 12번 반복
for _ in range(12):
a, b = map(int, sys.stdin.readline().split())
# 이어진 두 별의 번호가 가리키는 행렬의 요소를 1로 입력
A[a][b], A[b][a] = 1, 1
li = []
# 스피카는 다른 3개의 별과 이어져 있음
for i in range(1, 13):
if sum(A[i]) == 3:
li.append(i)
# 스피가와 이어진 별 3개가 이어진 별의 수는 6이고,
# li에 저장한 별 중에서 유일하다.
for p in li:
s = 0
for i, q in enumerate(A[p]):
if q:
s += sum(A[i])
if s == 6:
print(p)
break
import sys
A = [[0]*13 for _ in range(13)]
for _ in range(12):
a, b = map(int, sys.stdin.readline().split())
A[a][b], A[b][a] = 1, 1
for i in range(1, 13):
s = 0
if sum(A[i]) == 3:
for j, p in enumerate(A[i]):
if p:
s += sum(A[j])
if s == 6:
print(i)
break
행렬보다는 각 번호의 인덱스에 연결된 별의 번호를 추가하는 식으로 푸는 방법
import sys
A = [[] for _ in range(13)]
for _ in range(12):
a, b = map(int, sys.stdin.readline().split())
A[a].append(b)
A[b].append(a)
li = []
for i in range(1, 13):
if len(A[i]) == 3:
li.append(i)
for p in li:
s = 0
for i in A[p]:
s += len(A[i])
if s == 6:
print(p)
break