godmoon00   6년 전

다른 방법으로 풀어서 맞긴 맞았으나 비트마스크로 푼 풀이가 계속 틀려 질문드립니다.

각 행성마다 for문을 돌면서 만약 i 번째 행성이 시작점을 포함하면 a 에 1 << i 를 넣고, 도착점을 포함하면 b 에 1 << i 를 넣고

마지막에 a 와 b 를 XOR 한 결과중 1의 개수를 출력하도록 했습니다.

이러면 시작점을 포함하는 행성의 개수 + 도착점을 포함하는 행성의 개수 - 둘 다를 포함하는 행성의 개수가 구해진다고 생각했습니다..

제가 시도해본 건 다음과 같습니다.

1. 혹시나 입력으로 (1 << i) 가 64비트를 넘기는 n이 들어오나 싶어서 어썰트를 걸어봤지만 그런 문제는 없었습니다.

2. 19번째 줄을 long long 으로도 해보고 unsigned long long 으로도 해봤습니다.

3. 24, 27번째 줄의 |= 를 += 로 바꿔봤습니다.

비트마스크를 이용해본게 처음이라 제가 어느 부분에서 놓치고 있는지 파악하기 어렵네요..

도움 주시면 감사드리겠습니다!

WeissBlume   6년 전

(1LL << i)

으로 하면 맞아요 (1 << i : int)

godmoon00   6년 전

와 감사합니다!!!

하나 배우고 갑니다

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