아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

그레이 코드

면접 대비

시간 제한1초메모리 제한128 MB

요약
주어진 n비트 이진 문자열에서 첫 비트는 그대로 두고 인접한 두 비트를 더해 올림을 버린 값으로 표준 그레이 코드를 구합니다.
난이도

쉬움10점 중 1점

유형
비트 연산, 문자열
정답자
아직 제출이 없습니다

문제

이진수는 밑이 22인 수이고, 각 자리(비트)의 자릿값은 22의 거듭제곱이다. 예를 들어 십진수 2323은 이진수로 1011110111인데, 다음이 성립하기 때문이다.

(1×24)+(0×23)+(1×22)+(1×21)+(1×20)=16+4+2+1=23(1 \times 2^4) + (0 \times 2^3) + (1 \times 2^2) + (1 \times 2^1) + (1 \times 2^0) = 16 + 4 + 2 + 1 = 23

그레이 코드 수열은 이진값을 나열한 것으로, 각 값이 바로 앞 값과 정확히 한 비트만 다르다. 아래 표는 3비트 이진수의 표준 그레이 코드 수열이다.

이진수 수열000001010011100101110111
표준 그레이 코드 수열000001011010110111101100

이진수를 대응하는 표준 그레이 코드 값으로 바꾸는 방법은 아주 간단하다. 이진값 011011을 바꾼다고 하자. 먼저 첫 비트를 그대로 옮겨 적는다.

0 1 1
v
0

둘째 비트는 주어진 이진수의 첫째 비트와 둘째 비트를 더해서 얻는다. 합은 0+1=10 + 1 = 1이다.

0 + 1 1
    v
0   1

셋째 비트는 주어진 이진수의 둘째 비트와 셋째 비트를 더해서 얻는다. 합은 이진수로 1+1=101 + 1 = 10이지만 올림은 버리므로 오른쪽 끝 비트인 00만 취한다.

0 1 + 1
      v
0 1   0

따라서 답은 010010이다.

일반적으로 첫 비트를 빼면, 표준 그레이 코드의 kk번째 비트는 주어진 이진수의 k−1k-1번째 비트와 kk번째 비트를 더한 뒤 올림을 버려서 얻는다. 올림을 버리는 덧셈은 다음 네 가지가 전부다.

  0    0    1    1
+ 0  + 1  + 0  + 1
---  ---  ---  ---
  0    1    1    0

nn비트 이진값을 대응하는 nn비트 표준 그레이 코드 값으로 바꾸는 프로그램을 작성하시오. 1≤n≤201 \le n \le 20이다.

입력

입력은 두 줄이다.

  1. 첫째 줄에 비트 수 nn이 주어진다. 1≤n≤201 \le n \le 20이다.
  2. 둘째 줄에 nn비트 이진수를 나타내는, 길이가 nn인 비트 문자열이 주어진다.

출력

주어진 nn비트 이진수에 대응하는 표준 그레이 코드를 길이 nn인 비트 문자열로 출력한다.

예제6

  1. 예제 1

    입력
    3
    011
    
    예상 출력
    010
    
  2. 예제 2

    입력
    5
    01110
    
    예상 출력
    01001
    
  3. 예제 3

    입력
    6
    111111
    
    예상 출력
    100000
    
  4. 예제 4

    입력
    7
    1001001
    
    예상 출력
    1101101
    
  5. 예제 5

    입력
    9
    000111000
    
    예상 출력
    000100100
    
  6. 예제 6

    입력
    5
    10101
    
    예상 출력
    11111