Loading...

최소 스패닝 트리를 이용해서 그래프를 두 집합으로 분리하기(크루스칼 알고리즘 미세팁)

1. 문제 1647번: 도시 분할 계획 (acmicpc.net) 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net 2. 풀이 입력 자체가 "임의의 두 집 사이에 경로가 항상 존재하는 입력이 주어진다"라고 되어있는데 맨 처음에는 모든 정점에 대하여 서로 연결된 하나의 그래프 집합이 주어지는데.. 여기서 몇개의 간선을 선택해서 두 집합으로 분리하라는 문제 이 때 선택된 간선의 가중치 합이 최소가 되도록 만들어야한다 최소 스패닝 트리 이전에 그냥 진짜 단순하게 생각해보면, 초기에..

2021. 12. 14. 23:41

연속형 변수를 사용한 decision tree

보통 범주형 변수만 사용가능한 것처럼 decision tree를 설명하지만 decision tree의 구분 feature로 연속형 변수도 사용가능합니다. 방법은 여러 가지가 있는데 하나를 예로 들어 설명하자면 예시 데이터가 위와 같다고 합시다. 구분하고자하는 feature 여기서는 예를 들어 income을 정렬합니다. 그러면 label이 바뀌는 지점이 생기는데 label이 바뀌는 지점의 평균점을 기준값으로 잡습니다. 각각 59.7, 64.9, 84.9 세 지점이 생기는데 각 지점에서 information gain이 최대가 되는 기준지점을 찾습니다. gini 계수를 이용해 계산하면 income이 59.7보다 클때와 작을때로 구분하는 것이 최대라고 합니다. lotsize도 똑같은 방식으로 기준값을 잡고 각 ..

반복문에서 경우의 수를 나누는 방법

1. 문제 여러개의 음료수가 준비되어 있는데 각 음료수가 a개있고 1개당 b리터만큼 존재하고 1개당 c 칼로리의 열량을 가진다. 주어진 음료수에 대한 정보가 담겨있는 배열의 각 원소가 [a,b,c] 형태로 주어지고 p리터만큼 음료수를 마시고자 한다. 최대로 열량을 섭취하고자 할 때 최대 열량을 return하도록 함수를 완성한다면? 단, p리터 이전에 한번 마시기 시작한 음료수는 끝까지 다 마셔야한다고 가정한다. 그리고 한번에 a개의 음료수를 모두 마실 필요 없이 a개중 일부만 마시고 다른 음료수를 마신 다음에 못마신 음료수를 다시 마셔도 된다. 예를 들어 [[3,1,1],[1,2,2]]의 음료수 정보가 주어지고 p=3리터만큼 마시고자 할 때 총 4칼로리의 최대 열량을 얻을 수 있다. 첫번째 3개 있는 음..