본문 바로가기

자료구조 & 알고리즘8

Java 기본형 데이터 타입의 저장 가능 범위 참고 [JAVA] 3. 기본형 데이터타입의 저장 가능 범위 2021. 6. 11.
정수를 2진수로 표현했을 때, 비트가 1인 가장 큰 값 가져오기 Integer.highestOneBit(num)을 사용하면 num을 2진수로 표현했을 때 비트가 1인 가장 큰 값을 얻을 수 있다. 예시 System.out.println(Integer.highestOneBit(5)); 정수 5를 2진수로 표현하면 101이다. Integer.highestOneBit를 사용하면 100을 얻기 때문에 4가 출력된다. 참고 [JAVA] #27 Integer 클래스 메소드 정리 2021. 6. 10.
XOR을 이용한 유일한 숫자 찾기 오직 1개의 원소만 1번 들어있고 나머지 원소는 모두 2번씩 들어있는 int형 배열이 주어진다. 여기서 오직 1번만 들어있는 원소를 찾을때 XOR을 이용하면 시간 복잡도 O(n), 공간 복잡도 O(1)로 해결할 수 있다. 원리 XOR의 핵심은 자기자신과 연산하면 0이되고, 0과 연산하면 자기자신이 된다는 것이다. 또한, 여러개의 값을 연산할때 순서를 바꿔도 결과는 같다. 예시로 nums = {4, 1, 2, 1, 2}가 주어진다. 위 원리를 적용하면 아래와 같다. 4 ^ 1 ^ 2 ^ 1 ^ 2 = (1 ^ 1) ^ (2 ^ 2) ^ 4 = 0 ^ 0 ^ 4 = 0 ^ 4 = 4 코드 // 1 2021. 6. 10.
10진수를 2진수로 바꿨을때 1의 갯수 가져오는 방법 10진수를 2진수로 바꿨을때 1의 갯수를 가져오는 방법이 있다. 바로 Integer.bitCount(num)을 사용하면 된다. 코드 public static void main(String[] args) { System.out.println(Integer.bitCount(0)); //0 System.out.println(Integer.bitCount(1)); //1 System.out.println(Integer.bitCount(2)); //10 System.out.println(Integer.bitCount(3)); //11 System.out.println(Integer.bitCount(4)); //100 System.out.println(Integer.bitCount(5)); //101 System... 2021. 5. 22.