스큐 이진수
면접 대비시간 제한1초메모리 제한128 MB
주어진 십진수를 고유한 skew 이진 표현으로 바꾸고, 0이 아닌 자릿수의 순위를 오름차순 목록으로 출력한다.
문제
함수형 프로그래밍을 좋아하는 사람들은 증가와 감소가 쉽다는 이유로 스큐 이진수(skew binary number)를 특히 좋아한다. 이들의 기념 파티에 쓸 현수막과 각종 자료를 준비하기 위해, 십진 정수를 이들이 원하는 스큐 이진수 형식으로 바꾸는 프로그램을 작성하자.
수의 표현은 자릿수의 나열로 이루어진다. 가장 낮은 자리를 랭크(rank) 0, 그다음을 랭크 1, … 이라고 부른다. 예를 들어 십진법에서 자릿수는 0~9이고, 랭크 0의 가중치는 1, 랭크 1의 가중치는 10, 랭크 의 가중치는 이다. 이진법에서 자릿수는 0과 1이며, 랭크 의 가중치는 이다.
스큐 이진법에서 자릿수는 0, 1, 2이고, 랭크 의 가중치는 이다.
자릿수 2를 허용하면 한 수를 여러 방법으로 표현할 수 있다. 그러나 관례상 자릿수 2는 0이 아닌 자릿수 중 가장 낮은 랭크에서만 나타날 수 있으며, 이 규칙에 따라 표현이 유일해진다.
이 문제에서는 스큐 이진수를 0이 아닌 자릿수들의 랭크 목록으로 나타낸다. 값이 2인 자릿수는 그 랭크를 목록에 두 번 적어 나타낸다. 유일성 규칙 때문에 목록에서 값이 같을 수 있는 것은 가장 작은 두 랭크뿐이다. 랭크는 오름차순으로 나열하고, 각 랭크는 십진 정수이며, 랭크들은 쉼표(,)로 구분하고, 전체 목록은 [로 시작하여 ]로 끝난다. 예를 들어 십진수 5의 스큐 이진 표현은 자릿수 "12"(랭크 1에 1, 랭크 0에 2)이므로 [0,0,1]로 적는다. 십진수 0은 빈 목록 []이다.
주어진 십진수들을 각각 이 스큐 이진 목록 형식으로 변환하라.
입력
첫째 줄에 테스트 케이스의 수 ()가 주어진다. 이어지는 개의 줄에는 각각 하나의 십진수가 앞뒤 공백 없이 주어지며, 그 값은 이상 이하이다.
출력
각 테스트 케이스마다 한 줄에, 입력으로 주어진 십진수(앞쪽 0이나 공백 없이), 공백 한 칸, 그리고 위에서 설명한 목록 형식의 스큐 이진 표현(앞뒤 공백 없이, 목록 안의 각 랭크는 불필요한 앞쪽 0이나 주변 공백 없이)을 출력한다.