sue5750   4년 전

안녕하세요 비트마스크 관련 질문이 있습니다!

비트마스크의 경우 1부터 N까지 정수로 이루어진 집합을 사용하는 건 공간이 2배 더 필요하기 때문에 0부터 N-1까지로 변형해서 사용하는 것이 좋다고 하는데, 이 말이 의미하는 바가 이해되지 않습니다 ㅠㅠ

설명 부탁드립니다 감사합니다.

newdeal   4년 전

안녕하세요.

어느 풀이에서 나온 문장인지는 모르겠으나 문제 맥락상 제가 해석한 바로는

이 문제에서는 1부터20까지의 정수로 이루어진 집합을 다루고있고, 이를 곧이곧대로 표현한다면 비트마스크 풀이로 2^20 크기의 배열을 잡아야하는 것이 맞습니다.

하지만 이를 살짝 비틀어 문제의 입력값을 1씩 감소시키면서 0부터19까지의 정수로 다루게 된다면 2^19 크기의 배열만으로 잡을 수 있어

공간복잡도를 2배 감소시킬수 있다는 의미인 것 같습니다.

djm03178   4년 전

0부터 19까지로 할 때가 2^20입니다. 1부터 20으로 하려면 2^21의 크기가 필요합니다. 1~20번째 비트를 모두 사용하려면 (1 << 1) | (1 << 2) | (1 << 3) | ... | (1 << 20)이라는 값을 표현할 수 있어야 하는데, 이 값은 2^21 - 1과 같기 때문입니다.

djm03178   4년 전

정정: 1 << 0은 사용되지 않았으니 2^21 - 2와 같습니다.

댓글을 작성하려면 로그인해야 합니다.