[프로그래머스] 비트연산

박경희·2024년 1월 9일

코딩테스트

목록 보기
19/69

문제1 - 세균증식

public int solution(int n, int t) {
        int answer = n;
        for(int i=1; i<=t; i++){
            answer *= 2;
        }
        return answer;
    }
 public int solution(int n, int t) {
        for(int i = 0; i < t; i++) {
            n *= 2;
        }
        return n;
    }

비트 연산으로 풀기

    public int solution(int n, int t) {
        return n << t;
    } 

비트 연산

  • 비트 연산은 데이터의 비트(bit) 단위로 직접 조작하는 연산을 말한다.
  • 여기에서는 특히 왼쪽 시프트 연산자 << 를 사용하여 문제를 풀 수 있다.
  • 왼쪽 시프트 연산자는 피연산자의 비트를 왼쪽으로 이동시키며, 매 이동마다 2를 곱하는 효과가 있다.
    즉, a << ba를 2의 b 제곱만큼 곱한 값 과 같다.

세균이 1시간에 두 배씩 증식한다면, t 시간 후에는 n * 2^t 만큼의 세균이 있게 된다.
비트 연산을 사용해 이를 표현하면 n << t 와 같다.
이는 n을 t만큼 왼쪽으로 시프트하는 것과 동일하며, 결국 n * 2^t 를 계산하는 것과 같다.

0개의 댓글