티스토리 뷰
def dfs(graph, start):
visit = []
stack = [start]
while stack:
node = stack.pop()
if node not in visit:
visit.append(node)
stack.extend(graph[node])
return visit
t = int(input())
for case in range(1, t+1):
n, m = map(int, input().split())
graph = {}
visit = []
answer = 0
# 그래프 만들기
for i in range(m):
a, b = map(int, input().split())
graph[a] = graph.get(a, []) + [b]
graph[b] = graph.get(b, []) + [a]
for key in graph.keys():
if key in visit:
continue
else:
visit.extend(dfs(graph, key))
answer += 1
answer += n - len(graph) # 아는 사람이 아예 없는 아싸도 있으니까ㅠㅠ
print("#%d" % case, answer)
파이썬의 딕셔너리를 이용해 사람들끼리의 관계를 그래프로 만들었다.
그래프를 만들고 그래프의 key값만큼 반복문을 돌리면서
key값이 이미 방문한 값이면 continue
방문한적이 없으면 dfs 함수를 이용해 탐색하게 구현했다.
마지막에 관계가 아예 없는 사람도 있으니까 answer에 N - len(graph)한 값을 더해줘야 한다.
💡딕셔너리의 get함수를 모르겠다면 여기~💡
'ALGORITHM > SW Expert' 카테고리의 다른 글
[Python][D4] SWExpert - 나는 개구리로소이다(5550번) (0) | 2020.04.20 |
---|---|
[Python][D4] SWExpert - 이상한 나라의 덧셈게임(6959번) (0) | 2020.04.19 |
[Python][D4]SW Expert - 염라대왕의 이름 정렬(7701번) (0) | 2020.04.07 |
[Python][D3]SW Expert - 4일차 거듭제곱(1217번) (0) | 2020.03.13 |
[Python]SW Expert - 어디에 단어가 들어갈 수 있을까(D2) (0) | 2020.03.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2020 KAKAO BLIND RECRUITMENT
- 프로그래머스
- programmers
- 코딩테스트
- combination
- 구현
- Permutation
- 우선순위큐
- SW Expert
- 문자열처리
- dictionary
- 파이썬
- SWExpert
- 완전탐색
- 재귀
- 2019 Kakao Blind Recruitment
- 문자열
- 해시
- 괄호
- 힙
- left join
- BOJ
- Python
- 백준
- hash
- 순열
- C++
- 스택
- 딕셔너리
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함