아휴 이 문제는 이해하는 것부터 힘들었다 ^.^;
말장난에 놀아난 1인.. 나야 나..
visited를 1차원 배열로 하려고 했는데 계속 오류가 났다
결국 더 보기 편하게 2차원으로 걍 쪼개버렸다
A B C 친구가 있다.
2-친구가 되기 위한 조건은 총 2가지
1. A, B가 서로 친구
or
2. A와 C, B와 C가 친구인 경우
아래 예시로 살펴보면
A와 B가 친구
-> 2-친구 조건1 만족o
A와 C가 친구 x
-> 조건1 만족x,
그러면 조건 2를 살펴본다.
A와 B가 친구이고 C와 B가 친구이므로
A와 C도 친구가 될 수 있다. -> 조건2 만족o
**
fucn 함수 안에 있는 조건문에서 인덱스 순서가 바뀌어도 상관 없었다
A->B랑 친구이면 B->A도 친구이기 때문!
# 두사람이 친구 or (A와 친구 and B와 친구인 C가 존재해야한다)
n = int(input())
arr = [input() for _ in range(n)]
visited = [[0 for _ in range(n)] for _ in range(n)]
# 2-친구가 서로 연결되어 있는지 확인하는 함수
def func(idx, i):
for a in range(n):
# b랑 연결된 친구들 개수대로 visited[idx]에 더해줄거야
if arr[i][a] == "Y" and arr[idx][a] == "Y":
visited[idx][i] = 1
return True
for idx in range(n): # focus num
for i in range(n): # moving num
if i == idx:
continue
if arr[idx][i] == "Y" or func(idx, i): # Y
visited[idx][i] = 1
continue
ans=0
for i in visited:
ans=max(ans,sum(i))
print(ans)
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n1292] 쉽게 푸는 문제 in python (0) | 2021.10.18 |
---|---|
[n11655] ROT13 in python (0) | 2021.10.18 |
[n1904] 01타일 in python (0) | 2021.10.15 |
[n1026] 보물 in python (0) | 2021.10.13 |
[n1021] 회전하는 큐 in python (0) | 2021.10.13 |