비트마스크 문제에서 자주 사용되는 함수인 __popcnt 와 __builtin_popcount가 있는데 사용하다 보면 visual studio에서
는 잘 되다가도 백준에서는 제출 시 오류가 발생하고 반대로 하면 백준에서 컴파일이 안되는 상황이 발생합니다.
그 이유는 백준의 채점환경은 gcc환경이기 때문이고 비쥬얼 스튜디오는 msvc 이기 때문입니다.
이를 사용할 때마다 바꿔주는 건 귀찮기 때문에 다음과 같이 코드를 작성합니다.
#if defined(_MSC_VER)
h = __popcnt(arr[j] ^ b);
// __builtin_popcount(gcc에서 사용하는 것, msvc에서는 __popcnt를 사용해야함)
#else
h = __builtin_popcount(arr[j] ^ b);
#endif
그러면 제출 시와 컴파일 시 둘 다 문제 없이 작동합니다.
#c++ 비트개수세는 함수 #c++ __popcnt # c++ __builtin_popcount #__popcnt #__builtin_popcount #popcnt #builtinpopcount
'알고리즘' 카테고리의 다른 글
[BOJ / SCC] 4196 도미노 (0) | 2021.07.20 |
---|---|
[BOJ / 휴리스틱(시뮬레이티드 어닐링)] 2582 동전 뒤집기 2 (0) | 2021.07.19 |
[BOJ / 인덱스 트리] 1572 중앙값 (0) | 2021.07.15 |
[BOJ / 세그먼트 트리] 10999 구간 합 구하기 2 (0) | 2021.07.15 |
[백준] 400문제 달성! (PLATINUM IV) (0) | 2021.07.12 |