x와 x를 왼쪽으로 1비트 이동한 값의 xor로 스크램블된 각 바이트에서 원래 바이트 x를 복원합니다.
쉬움3비트 연산완전 탐색면접 대비아직 제출이 없습니다시간 제한5초메모리 제한256 MB친구 아담이 라즈베리 파이와 무선 온도 센서, 그리고 센서가 보내는 신호를 받을 433MHz 수신기를 샀다. 아담은 라즈베리 파이를 실내 기상 표시기로 쓸 생각이다. 전자 회로를 잘 다루는 아담은 수신기가 센서 신호를 받게 만드는 데까지는 금방 성공했다. 그런데 센서가 보낸 바이트를 들여다보니 도무지 해석할 수 없었다. 여러 시간 동안 자료를 뒤진 끝에, 이 기상 센서가 다른 제조사 제품과 함께 쓰이지 못하도록 보내는 데이터를 뒤섞는다는 설명 문서를 찾았다.
다행히 그 문서에는 센서가 통신 내용을 뒤섞는 방법도 적혀 있다. 센서는 보내는 모든 바이트에 x ^ (x << 1) 식을 적용한다. ^는 비트별 배타적 논리합이다. 예를 들어 10110000 ^ 01100100 = 11010100이다. <<는 바이트 값을 왼쪽으로 미는 연산이고, 비트를 돌려서 넣지 않는다. 예를 들어 10111001 << 1 = 01110010이다.
비트별 배타적 논리합에서 결과의 i번째 비트는 두 피연산자 중 정확히 하나만 i번째 비트가 1일 때 1이다. x << j에서는 x의 비트가 왼쪽으로 j칸 이동한다. 가장 위쪽 j개 비트는 버리고, 가장 아래쪽 j개 비트는 0으로 채운다. 여기서 x는 8비트 바이트이므로 결과도 8비트다.
라즈베리 파이가 기상 센서의 바이트를 제대로 해석하려면 전송 내용을 원래 값으로 되돌려야 한다. 아담을 대신해 복원 알고리즘을 구현하라.
첫째 줄에 기상 센서가 보낸 메시지의 바이트 개수 n이 주어진다. (1≤n≤105)
둘째 줄에 메시지의 바이트 값 b1,b2,…,bn이 공백으로 구분되어 주어진다. (0≤bi≤255)
복원한 메시지의 바이트 값 n개를 십진수로 한 줄에 출력한다. 값 사이는 공백 하나로 구분한다.