728x90
0. [c++] 백준 |
https://www.acmicpc.net/problem/9019
1. 풀이 |
2. 소스코드 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include<iostream> #include<vector> #include<algorithm> #include<queue> #include<string> using namespace std; int N, object; void dp(const int a) { queue<int> qu; vector<bool> visited(10001, false); vector<string> ans(10001); visited[a] = true; qu.push(a); while (!qu.empty()) { int here = qu.front(); qu.pop(); int D = here * 2; D %= 10000; int S = here - 1; if (here == 0) S = 9999; int L = here * 10; L += (here / 1000); L -= (here / 1000) * 10000; int R = here / 10; R += (here % 10) * 1000; //cout << D << " " << S << " " << L << " " << R << endl; if (!visited[D]) { qu.push(D); visited[D] = true; ans[D] = ans[here] + "D"; } // S 연산 if (!visited[S]) { qu.push(S); visited[S] = true; ans[S] = ans[here] + "S"; } // L 연산 if (!visited[L]) { qu.push(L); visited[L] = true; ans[L] = ans[here] + "L"; } // R 연산 if (!visited[R]) { qu.push(R); visited[R] = true; ans[R] = ans[here] + "R"; } if (visited[object]) break; } cout << ans[object] << endl; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; while (N--) { int a; cin >> a >> object; dp(a); } } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > 동적 계획법' 카테고리의 다른 글
[c++]백준 13913 - 숨바꼭질 4(dp) (0) | 2020.04.18 |
---|---|
[c++] 백준 2618 - 경찰차(dp) (0) | 2020.04.18 |
[c++] 백준 14003 - 가장 긴 증가하는 부분 수열 5(dp) (0) | 2020.04.17 |
[c++] 백준 14002 - 가장 긴 증가하는 부분 수열4(dp) (0) | 2020.04.17 |
[c++] 백준 12852 - 1로 만들기 2(dp) (0) | 2020.04.17 |