알고리즘/BOJ

백준 1949번 우수 마을

꾸준함. 2020. 5. 18. 23:06

문제 링크입니다: https://www.acmicpc.net/problem/1949

 

1949번: 우수 마을

첫째 줄에 정수 N이 주어진다. (1≤N≤10,000) 둘째 줄에는 마을 주민 수를 나타내는 N개의 자연수가 빈칸을 사이에 두고 주어진다. 1번 마을부터 N번 마을까지 순서대로 주어지며, 주민 수는 10,000 ��

www.acmicpc.net

트리 자료구조를 활용한 DP 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. 나라가 트리 구조로 이루어지고 있기 때문에 우선 트리의 구조를 createTree 함수를 통해 구성합니다.

1.1 트리의 경우 사이클을 이루지 않기 때문에 어느 마을이나 root 로 선정해도 됩니다. 따라서 편리하게 마을 번호의 시작점인 1을 루트로 지정했습니다.

2. func 함수의 경우 매개변수로 현재 마을 번호우수 마을 여부 를 전달 받습니다.

2.1 현재 마을이 우수 마을이라면 다음 마을은 필연적으로 우수 마을이 아닙니다.

2.2 현재 마을이 우수 마을이 아니라면 다음 마을은 우수 마을일수도 우수 마을이 아닐 수도 있습니다.

2.3 2.1과 2.2번의 경우를 모두 따져 우수마을이라면 결과에 주민수를 더해줍니다.

3. 2번의 모든 경우를 따져 최대 우수 마을 주민수들의 합을 구해줍니다.

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 1019번 책 페이지  (0) 2020.05.22
백준 13904번 과제  (0) 2020.05.21
백준 15829번 Hashing  (0) 2020.05.18
백준 16500번 문자열 판별  (0) 2020.05.14
백준 1059번 수2  (0) 2020.05.08