[백준]1058(파이썬) - 친구
resilient
·2021. 7. 19. 15:51
728x90
반응형
https://www.acmicpc.net/problem/1058
- 이 문제는 다양한 방법으로 풀 수 있지만 나는 탐색으로 구현하였다.
- 먼저 입력받은 2차원 배열을 2중 for문으로 돌리면서 graph [i][j]가 Y이고 i와 j 가 다를 경우 비어있는 2차원 배열의 i 인덱스에 넣어주었다. 그렇게 되면 data리스트에는 각각 인덱스 별로 Y가 들어있었던 인덱스만 들어있게 된다.
- 그럼 그 data리스트를 for문으로 돌리면서 그 안에 Y, 즉 한 번 건너서 친구인 사람이 있는지 없는지 검사해주면 된다.
- 구현하고 보니까 플로이드워셜 방법하고 똑같았다. 좀 복잡하게 사용했을 뿐..
- 다음에는 DFS나 BFS로 풀 수 있을 거 같아서 풀어보려고 한다.
import sys
input = sys.stdin.readline
n = int(input())
graph = [list(input().rstrip()) for _ in range(n)]
data =[[] for _ in range(n)]
for i in range(n):
for j in range(n):
if graph[i][j] == 'Y' and i != j:
data[i].append(j)
for k in range(len(graph[j])):
if graph[j][k] == 'Y' and i != k:
data[i].append(k)
data_flag = data
for i in range(len(data)):
data[i] = list(set(data[i]))
Max = 0
for i in data:
if len(i)>Max:
Max = len(i)
print(Max)
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
[백준]10026(파이썬) - 적록색약 (0) | 2021.07.22 |
---|---|
[백준]1068(파이썬) - 트리 (0) | 2021.07.20 |
백준6064(파이썬) - 카잉 달력 (0) | 2021.07.18 |
백준1759(파이썬) - 암호만들기 (0) | 2021.07.16 |
백준10972(파이썬) - 다음 순열 (0) | 2021.07.15 |