반응형
1000000 크기의 배열이 주어지고, 그 배열 내에서 1이 드문 드문 연속된다고 가정합니다.
연속된 1을 카운트할 때 for() 또는 while() 반복문을 이용하여 count 값을 증가시키며 체크를 하는 방법도 있지만,
아래 코드와 같이 길이 8을 뛰어넘으면서 사용도 가능합니다.
unsigned char map[1000000];
...
map_ptr = (unsigned long long*) & map[i];
while (*map_ptr == 72340172838076673 && i < 1000000) {
*map_ptr = 144680345676153346;
map_ptr++;
...
// Do something
}
위에서 72340172838076673 값은 0x0101010101010101 으로 map 배열 내부 값으로 11111111 로 표현이 됩니다.
그리고 144680345676153346 값은 0x0202020202020202 으로 map 배열 내부 값을 22222222로 한번에 변경하는 방법입니다.
그렇게 가독성이 좋지도 않고, 추천하는 방법은 아니지만 가끔은 시간 최적화 시에 사용할 수 있는 방법이긴 합니다.
* 팀원들과 함께 개발하는 코드에서는 절대 사용하지 않는 것을 추천합니다. *
반응형
'ETC > Data Struct | Algorithm' 카테고리의 다른 글
[Queue] Thread 간 통신을 위한 Async Queue (비동기 큐) (0) | 2018.08.08 |
---|---|
Priority Queue , 우선순위 큐 (0) | 2017.08.06 |
Geometry (0) | 2017.07.17 |
[STL] algorithm 내부 sort 함수의 원형 (0) | 2015.04.01 |
Graph - 인접 행렬 그래프 (0) | 2014.06.25 |