Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코테 연습
- beuatifulsoup
- Spark
- HTML
- cloud platform
- 코딩 테스트
- Tableau
- 데브코스
- 데이터 엔지니어
- superset
- PCCP
- django
- Til
- airflow
- SQL
- Kafka
- Snowflake
- 슈퍼셋
- 데이터 시각화
- 코딩테스트
- AWS
- 팀 프로젝트
- Selenium
Archives
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
코딩 테스트(Python) 가장 먼 노드 본문
문제 설명
n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다.
노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요.
from collections import deque
def solution(n, edge):
answer = 0
# edge의 각 항목을 오름차순으로 정렬 후 다시 정렬된 리스트로 변경
edge = sorted([sorted(x) for x in edge])
# 각 노드에 연결된 노드를 담을 그래프 생성
graph = [[] for i in range(n+1)]
# 각 노드의 거리 정보를 담을 배열 초기화 (0으로 시작)
distance = [0 for i in range(n+1)]
# BFS를 위한 큐 생성
queue = deque()
queue.append(1) # 시작 노드는 1
distance[1] = 1 # 시작 노드의 거리는 1로 설정
# 그래프에 간선 정보 추가 (양방향 연결)
for i, j in edge:
graph[i].append(j)
graph[j].append(i)
# BFS 시작
while queue:
temp = queue.popleft() # 큐에서 노드 하나 꺼냄
for node in graph[temp]:
if distance[node] == 0: # 아직 방문하지 않은 노드라면
queue.append(node) # 큐에 추가
distance[node] = distance[temp] + 1 # 현재 노드의 거리 + 1
# 가장 먼 거리 구하기
max_dis = max(distance)
# 가장 먼 거리에 해당하는 노드의 개수를 셈
for i in distance:
if i == max_dis:
answer += 1
return answer # 가장 먼 노드의 개수 반환
'코딩 테스트' 카테고리의 다른 글
코딩 테스트(Python) 2020 카카오 인턴십 경주로 건설 (1) | 2024.12.19 |
---|---|
코딩 테스트(Python) 2019 카카오 개발자 겨울 인턴십 징검다리 건너기 (0) | 2024.12.17 |
코딩 테스트(Python) 2019 카카오 개발자 겨울 인턴십 불량 사용자 (0) | 2024.12.17 |
코딩 테스트(Python) n-queen (0) | 2024.12.17 |
코딩 테스트(Python) 2021 KAKAO BLIND RECRUITMENT 순위 검색 (0) | 2024.12.17 |