백준 1135. 뉴스 전하기

2023. 11. 7. 17:04·백준

https://www.acmicpc.net/problem/1135

 

1135번: 뉴스 전하기

민식이는 회사의 매니저이다. 그리고, 민식이는 회사의 중요한 뉴스를 모든 직원에게 빠르게 전달하려고 한다. 민식이의 회사는 트리 구조이다. 모든 직원은 정확하게 한 명의 직속 상사가 있다

www.acmicpc.net

def dfs(node, graph):
    if not graph[node]: # 자식 노드가 없는 경우
        return 0
    # 직속 상사의 모든 직속 부하에 대한 거리를 저장
    times = [dfs(child, graph) for child in graph[node]] # 모든 직속 부하들에 대해 반복
    times.sort(reverse=True) # 가장 먼 직속부하가 가장 앞에 오도록 정렬

    max_time = 0
    for i, time in enumerate(times):
        max_time = max(max_time, i + 1 + time) # 현재노드와 사장사이의 거리(+1) 최댓값 갱신

    return max_time # 모든 노드 간 거리 중 가장 긴 거리가 정답임!! = 노드와 사장 사이의 최대 거리

n = int(input())
graph = [[] for _ in range(n)]

for i, num in enumerate(map(int, input().split())):
    if num != -1:
        graph[num].append(i)

print(dfs(0, graph))

- 그리디 문제답게 보이면 쉽게 풀리는 문제였을 것 같다...

- 복잡하게 생각하지 말고 사장과 가장 멀리 있는 부하의 거리를 구하면 되는 문제 -> 발상의 전환! 단순하게 생각

- 나는 처음에 dp에 인덱스별로 집어넣고 하나씩 지우며 카운트해가는 걸 생각했는데 동시처리가 안돼서 fail

- gpt의 도움을 받아 겨우 이해했다...

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 11725. 트리의 부모 찾기  (0) 2024.02.28
백준 2531. 회전 초밥  (0) 2023.11.13
백준 1939. 중량제한  (0) 2023.11.03
백준 1520. 내리막 길  (0) 2023.11.01
백준 4485. 녹색 옷 입은 애가 젤다지?  (0) 2023.10.30
'백준' 카테고리의 다른 글
  • 백준 11725. 트리의 부모 찾기
  • 백준 2531. 회전 초밥
  • 백준 1939. 중량제한
  • 백준 1520. 내리막 길
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    항해99
    개발자취업
    코딩테스트준비
    99클럽
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 1135. 뉴스 전하기
상단으로

티스토리툴바