RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚

이상한 나라의 개발자

Algorithm/Baekjoon

[Baekjoon] 14699. 관악산 등산(Python)

2022. 6. 2. 18:15
728x90
반응형
 

14699번: 관악산 등산

서울대학교에는 “누가 조국의 미래를 묻거든 고개를 들어 관악을 보게 하라”라는 유명한 문구가 있다. 어느 날 Unused는 Corea에게 조국의 미래를 물었고, Corea는 직접 관악산에 올라가 조국의 미

www.acmicpc.net

 

문제

관악산의 등산로는 1부터 N까지의 서로 다른 번호가 붙어 있는 N개의 쉼터와 두 쉼터 사이를 오갈 수 있는

M개의 길들로 이루어져 있습니다.

 

관악산의 쉼터들에는 전망대가 하나씩 설치되어 있습니다. Corea가 각각의 쉼터에서 출발해서

산을 오를 때 최대 몇 개의 쉼터를 방문할 수 있는지 구해봅시다.

 

풀이

DFS(깊이우선탐색)을 이용해 풀 수 있는 문제입니다.

1. 특정 쉼터에서 출발해 자신보다 높은 쉼터로 이동해 가면서 더 이상 이동할 수 없을 때, 값을 반환합니다.

 

해당 쉼터에서 갈 수 있는 최대 쉼터의 개수는

1에서 구한 값들 중의 최대값에 1를 더한 값 입니다.

이러한 DFS를 각 쉼터를 출발점으로 해서 결과 값을 구할 수 있습니다.

 

코드

import sys
sys.setrecursionlimit(15000)
input = sys.stdin.readline

n, m = map(int, input().split())
height = [int(x) for x in input().split()]

maps = [[] for _ in range(n)]
for _ in range(m):
  s, e = map(int, input().split())
  maps[s-1].append(e-1)
  maps[e-1].append(s-1)

cache = [0]*n

def dfs(start):
  if cache[start] > 0:
    return cache[start]
  
  result = 0
  for end in maps[start]:
    if height[start] < height[end]:
      result = max(result, dfs(end))
  
  cache[start] = result + 1
  return cache[start]

answer = ''
for s in range(n):
  answer += ("%d\n" % dfs(s))
print(answer)
반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

[Baekjoon] 1613. 역사(Gold 3)[Java]  (0) 2022.06.05
[Baekjoon] 15961. 회전초밥(Gold 4)[Python]  (0) 2022.06.05
[Baekjoon] 1477. 휴게소 세우기(Gold 4)[Python]  (0) 2022.06.05
[Baekjoon] 10828. 스택(Silver 4)[Python]  (0) 2022.06.05
[Baekjoon] 1992. 쿼드트리(python)  (0) 2022.05.26
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • [Baekjoon] 15961. 회전초밥(Gold 4)[Python]
    • [Baekjoon] 1477. 휴게소 세우기(Gold 4)[Python]
    • [Baekjoon] 10828. 스택(Silver 4)[Python]
    • [Baekjoon] 1992. 쿼드트리(python)
    RIEN😚
    RIEN😚
    안드로이드 / 코틀린 독학으로 취업하자!

    티스토리툴바