비트마스킹
[BaekJoon] 백준 2098번 외판원 순회
[BaekJoon] 백준 2098번 외판원 순회 🎈문제 https://www.acmicpc.net/problem/2098 💬설명 간단하게 말하자면, 해당 문제는 사이클을 구하는데 그 사이클을 돌 때 가장 적은 비용이 드는 사이클을 구하는 것이다. 즉, 1->0->2->3->1 이렇게 돌아서 오는 경우와 2->3->1->0->2 이렇게 돌아서 오는 경우가 드는 비용이 같다는 것을 우선 염두에 두고 생각을 해보자. (편의상 0번 도시부터 있다고 가정하자.) 그렇게 되면, 우리는 모든 경우를 돌 때 0번 도시에서 출발한다고 가정해도 무방하다. 0->...->0 에서 ("..." 에 들어가는 도시들의 순서 + 모든 도시들을 돌았는지)만 고려해주면 되니까! 다시 말해서, 0번 도시에서 시작하는 경우만 생각하더라도..
[Algorithm] 비트마스킹
비트마스킹(BitMasking) 비트마스킹(BitMasking)이란 비트를 활용해 집합을 표현하는 기법이라고 볼 수 있다. 빠른 연산속도와 적은 메모리 사용량, 그리고 배열을 정수로 표현할 수 있다는 장점이 있다. 비트는 컴퓨터에서 사용되는 데이터의 최소단위인데 0과 1로 표현한다. 따라서 2진법이라고 생각하면 편하다. 비트마스킹은 이런 특징을 이용한다. 예를 들어 {1, 4, 3}이라는 집합이 있다고 해보자. 각 원소의 포함 여부를 이용해 부분집합을 표현하면 다음과 같다. {1, 4} => 110 {3} => 001 {1, 3} => 101 또한 이를 10진수로 표현할 수도 있다. {1, 4} => 110 => 6 {3} => 001 => 1 {1, 3} => 101 => 5 이러한 특징을 이용해 비트..