profile
비전공자 개발자 지망생
post-thumbnail

[BOJ] 1135번(Python) - 뉴스 전하기

문제 입력 첫째 줄에 직원의 수 N이 주어진다. 둘째 줄에는 0번 직원부터 그들의 상사의 번호가 주어진다. 0번 직원 (오민식)은 상사가 없기 때문에 -1이고, 나머지 직원 i의 상사 번호는 i보다 작거나 같은 음이 아닌 정수이다. N은 50보다 작거나 같은 자연수이다. 출력 첫째 줄에 모든 소식을 전하는데 걸리는 시간의 최솟값을 출력한다. ❗ 풀이 문제 접근 1 문제에서 대놓고 트리 구조인 것을 알려주었고, 자식 노드에서 걸린 시간이 부모 노드에게 영향이 가기 때문에, 다이나믹 프로그래밍을 활용하여 풀고자 했다. DP를 사용하는 것은 쉽지만 문제는 트리구조에서 어떻게 활용할지 였는데, 자식 노드가 여러 개일 경우, 자식 노드들이 가지고 있는 자식 노드

2023년 3월 29일
·
0개의 댓글
·
post-thumbnail

[알고리즘] 동적계획법(DP)

🛴 DP란? > 큰 문제를 여러 작은 문제로 나누어 그 문제의 결과 값을 토대로 해결하고자 하는 알고리즘이다 ❗ 분할 정복과의 차이점 분할 정복은 DP와 달리 하위 문제가 중복되지 않을 수도 있다는 차이점이 있다. DP는 계속해서 문제가 중복되는 것을 하술할 메모이제이션을 통해 제거하는 알고리즘이다. 🎞 메모이제이션(Memoization) > 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술 메모이제이션은 DP의 핵심이 되는 기술이다. 메모이제이션은 작은 문제의 값을 저장하고 이를 바탕으로 큰 문제를 해결해가며 다시 그 문제의 값을 저장, 해당 값을 바탕으로 더 상위에 있는 문제를 해결하는 식으로 활용된다. 📉탑다운(Top-Down)과 📈바텀업(Bottom-Up) DP에는 크게 탑다운 방식과 **바

2023년 3월 29일
·
0개의 댓글
·