[백준] 2565번 : 전기줄
https://www.acmicpc.net/problem/2565 해당문제는 다이나믹 프로그래밍으로 문제를 해결하였습니다. LIS 문제로 최장증가 부분 수열 을 찾는 문제입니다. ( Longest Increasing Subsequence) LIS란 : 원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하고, 그 길이가 최대한 부분 수열을 최장 증가 부분 수열이라고 합니다. 예를들어, {6,2,5,1,7,4,8,3} 이라는 배열이 있을경우, LISSMS { 2,5,7,8 } 이 됩니다. 일반적으로 길이가 얼마인지 푸는 방법은 DP 다이나믹 프로그래밍을 이용하는 것입니다. N = int(input()) queue = [] for _ in range(N..
[백준] 17471번 : 게리맨더링
17471번: 게리맨더링 해당문제는 문제를 푸느라 굉장히 고생을 했습니다. A구역, B구역 으로 나눌 수 있는 경우의 수를 모두 구한다. A,B 구역을 나누는 방법은 저는 재귀를 통하여 경우의 수를 만들었습니다. 파이썬의 조합 라이브러리를 사용 할 수 있었지만 사용하지 않았습니다. A,B 구역을 나눌때 예를들어 N이 6일때 {1,2,3) {4,5,6}와 {4,5,6}, {1,2,3} 이 중복되지 않도록 만듭니다. 또한 순열이 아닌 조합으로 만들어야합니다. A구역, B구역으로 각각 잘 나누어졌는지 확인한다. A, B 구역으로 잘 나누었는지 확인하는 방법은 BFS를 활용 하였습니다. 팀에서 특정한 점에서 BFS를 했을때 다른 팀을 거쳐서 가지않고 우리팀을 갈 수 때이어야 합니다. A구역, B구역의 인구수의 ..