https://www.acmicpc.net/problem/32942
개념 - 동주햄에게 배운 개념

# 인접 리스트를 이용한 그래프 탐색
found link(root) 1
visit 1
found link 2
visit 2
found link 3
visit 3
link not found
link not found
found link 3
already visited
found link 4
visit 4
found link 3
already visited
link not found
link not found
end더보기# 수행 시간 계산 - 정점의 제곱
# 수행 시간 계산 - 정점의 제곱
visit : 4 # 노드의 개수만큼 visit함
found link : 5 + 1 # 링크의 개수만큼 found함
link not found : 4 # 노드 개수만큼 link not found
already visited : 2 #
정점의 개수 : N = 4, 간선의 개수 : M = 5
수행시간 : T = visit + found link +link not found + already visited
= (visit + aleardy visited) + found link + link not found
= 2 * found link + link not found
= 2 * (M+1) + N
=> O(M+N)
# 인접 행렬을 이용한 그래프 탐색
visited 1: o
visited 2: o
visited 3: o
visited 4: x
found link(root) 1
visit 1
link not found 1
found link 2
visit 2
link not found 1
link not found 2
found link 3
visit 3
link not found 1
link not found 2
link not found 3
link not found 4
link not found 4
found link 3
already visited
found link 4
visit 4
link not found 1
link not found 2
found link 3
already visited
link not found 4
end더보기# 수행 시간 계산 - 정점의 제곱
# 수행 시간 계산 - 정점의 제곱
found link : 6
link not found : 11
visit + already visited = found link
found link + link not found = visit * n
풀이
A, B, C = map(int,input().split())
# G[x] = [, , , ,]: x에 연결된 정점들
adj_lst = [[] for _ in range(11)]
adj_mat = [[0] * 11 for _ in range(11)]
for x in range(1,11):
for y in range(1,11):
if A*x + B*y == C:
adj_lst[x].append(y) # 인접 리스트를 만드는 방법
adj_mat[x][y] = 1 # 인접 행렬을 만드는 방법
def print_adj_mat(adj_mat):
for i in range(1,11): # 인접 행렬로 출력하는 방식
conn = [j for j in range(1,11) if adj_mat[i][j] == 1]
if conn:
print(*conn)
else:
print(0)
def print_adj_lst(adj_lst):
for i in range(1,11):
if adj_lst[i]:
print(*adj_lst[i])
else:
print(0)'Python > BaekJoon' 카테고리의 다른 글
| [python] 백준 알고리즘 10451번 : 순열 사이클 - 인접 리스트, 그래프 순회, 그래프 탐색 (0) | 2025.02.20 |
|---|---|
| [python] 백준 알고리즘 11279번 : 최대 힙 - heapq 모듈 사용하기 (0) | 2025.02.17 |
| [python] 백준 알고리즘 1417번: 국회의원 선거 - 그리디 알고리즘 (0) | 2025.02.16 |
| [python] 백준 알고리즘 2537번: k진수 정수의 자릿수 나누기 - python에서 n진법으로 숫자 바꾸기 (0) | 2025.01.31 |