[BOJ 16234] 인구이동
매커니즘1. 국경선이 개방된 나라들끼리 연합 번호를 붙여준다.2. 연합에 속해있는 국가의 수, 총 인원수를 센다.3. 인원 이동을 시킨다. (평균 값으로 바꿔주기) 1. 연합 번호 붙이기각 나라들의 연합 번호가 들어갈 guild(n*m)배열을 만든다. bfs를 이용하여 두 나라 간의 인구 차이가 l과 r사이라면 그 나라의 위치에 guildNum을 붙여준다.위 예시처럼 한다면 guild 배열은[ [1, 1, 2], [1, 1, 2], [3, 2, 2]]와 같은 배열이 된다. 2. 각 연합에 속해 있는 국가의 수와 총 인원 수 세기연합 번호를 붙일 때, 국가의 수와 총 인원수를 함께 계산해서 guildDict라는 dictionary에 {연합번호 : [연합국의 수, 총 인원]}을 삽입해준다.위 예시..
비트마스킹을 이용한 모든 부분집합 구하기
public class Subset { public static void main(String[] args){ char[] arr = {'A', 'B', 'C', 'D'}; int len = arr.length; for (int i = 1; i 비트마스킹을 이용한 모든 부분집합을 구하는 원리는 집합에서 꺼내올 원소를 1로 보는 것이다. char[] arr = {'A', 'B', 'C', 'D'} 라는 집합을 보자. 이 집합의 부분집합으로는 {'A','B','AB','C','AC','BC','ABC','D','AD','BD','ABD','CD','ACD','BCD','ABCD'}가 있다. 이 부분집합들은 각각 {1000(2), 0100(2), 1100(2), 0..