//0에 대해 예외 처리를 해야할 것 같은데,,,,,
#include <stdio.h>
#include <memory.h>
#include <queue>
#include <vector>
char w[5]="DSLR";
int d[10010];
int A, B;
std::queue<int> q;
void f(int a) {
//debug : printf("%d : %d\n",a , d[a]);
if(a==A) return;
else f(d[a]);
int nA=d[a];
if((d[a]*2)%10000==a) printf("D");
else if((d[a]-1)==a||(d[a]+9999)==a) printf("S");
else if(a==(d[a]%1000)*10+(d[a]/1000)) printf("L");
else if(a==(d[a]%10)*1000+(d[a]/10)) printf("R");
else printf("?");
}
int main() {
//초기화
std::vector<int> v[10010];
for(int i=0; i<10000; i++) {
int d=i*2, s=i-1, l=(i%1000)*10+(i/1000), r=(i%10)*1000+(i/10);
if(d>9999) d%=10000;
if(s<0) s+=10000;
v[i].push_back(d);
v[i].push_back(s);
v[i].push_back(l);
v[i].push_back(r);
}
int n;
scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%d %d", &A, &B);
//초기화 : 전 위치 저장
memset(d, -1, sizeof(d));
d[A]=10001;
q.push(A);
while(!q.empty()) {
int S=q.front();
q.pop();
for(int i=0; i<4; i++) {
if(d[v[S][i]]==-1) {
//printf("%d ", v[S][i]);
q.push(v[S][i]);
d[v[S][i]]=S;
}
}
//puts("");
}
f(B);
puts("");
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: