Binary Gap 문제
·
CS/알고리즘 & 자료구조
문제숫자를 이진수로 변환하여 1과 1사이의 길이 수를 출력아이디어1. 숫자를 바이너리 문자로 변환 후 순회하면서 0 카운트 갱신구현이 가장 직관적디버깅, 테스트 쉬움문자열 변환·할당 비용이 있음O(logN)2. 비트 연산 단일 루프 방식순회 N > 0N & 1 으로 LSB 조사N >>= 1 로 한 비트씩 오른쪽으로 이동문자열 변환 없이 비트만 직접 다름, O(1), 속도 측면에서 매우 효율적비트 마스크·시프트에 익숙해야함3. 정규 표현식 활용2진 문자열에서 1 ( 0+ ) 1 패턴을 모두 찾아서 그룹 길이의 최댓값코드가 한두 줄로 간결정규식 매칭 비용이 있고, 가독성이 다소 떨어질 수 있음4. 수학적 모듈로 연산N % 2 로 LSB를 구하고N /= 2 로 우측 쉬프트와 동일한 효과를 내면서0,1 카운팅 ..
[자료구조] 비트연산
·
CS/알고리즘 & 자료구조
컴퓨터는 근본적으로 모든 처리를 비트연산을 통해서 수행합니다. 결론부터 말하자면, 비트연산을 사용하는 목적은 빠른 응답을 위해서 입니다. 일반적인 4칙연산(+,-,*,/)은 피연산자와 연산자의 조합을 확인하고 변환하여 처리합니다. 그러므로 비트연산을 직접적으로 처리하면 더 빠른 연산을 시행할 수 있는 것입니다. 시프트 연산은 숫자타입만 가능하며, 정수를 이용하여 설명을 진행합니다. 1. 정수의 범위와 부호에 대한 구조 2. 비트연산의 피연산자 3. 시프트 더보기 여담으로 산수와 수학은 사전적 의미가 다릅니다. 산수는 계산력이 본질이며, 수학은 논리력과 사고력이 본입니다. 1. 정수의 범위와 부호에 대한 구조 대부분의 정수는 4byte의 크기를 가짐으로 이 기준으로 설명하겠습니다. 4byte를 모두 양의 ..