Leetcode Java Gray Code

업데이트:

문제

Link

코드

class Solution {

  public List<Integer> grayCode(int n) {
    List<Integer> result = new ArrayList<>();
    result.add(0);
    int increase = 1;
    for (int i = 1; i <= n; i++) {
      for (int j = result.size(); j > 0; j--) {
        result.add(increase + result.get(j - 1));
      }
      increase *= 2;
    }
    return result;
  }

}

결과

Link

설명

  1. 0부터 1 비트만 변경하면서 $2^n - 1$ 까지의 숫자들을 순차적으로 List에 넣어 반환하는 문제이다.

  2. 문제를 풀기 위한 변수를 정의한다.
    • 결과를 반환하기 위한 변수인 List를 정의하여 초기 값인 0을 넣어준다.
    • 2의 배수 증가치로 사용하기 위한 변수 increase를 정의한다.
  3. 1부터 n까지 반복하여 결과를 만들어 준다.
    • 변수 result에 포함된 값들을 역순으로 활용하여 result에 $increase + result.get(j - 1)$ 값을 result에 다시 넣어준다.
    • 위의 반복이 종료되면 increase 값을 2배로 증가시킨다.
  4. 반복이 완료되면 모든 값을 result에 넣었으므로, 변수 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기